我想实现1024x1024单色网格,我需要从任何单元格读取数据并插入不同维度的矩形,我尝试在列表中创建列表(并像二维数组一样使用它),我发现布尔值列表比整数列表更慢……我试过一维列表,它比二维列表慢,numpy比标准python列表慢10倍,我发现最快的方法是PIL和单色位图,使用"load“方法,但我希望它运行得更快,所以我试着用shedskin编译它,但不幸的是,那里没有pil支持,你知道有什么方法可以更快地实现这样的网格,而不需要重写到c或c++吗?
发布于 2011-01-09 10:05:29
拉斐尔建议使用数组是很好的,但它在CPython上没有帮助,实际上我预计它会慢10-15%,但是如果你在PyPy (http://pypy.org/)上使用它,我会期待很好的结果。
发布于 2011-01-09 09:36:11
我建议使用Python的内置数组类(http://docs.python.org/library/array.html),其类型为“B”。如果每个像素使用一个字节,那么编码将是最简单的,但如果你想节省内存,可以将8个字节打包为一个字节,并使用自己的位操作进行访问。
发布于 2011-01-09 14:30:10
我会研究Cython,它将Python语言转换成容易编译的C语言(如果您使用distutils,也可以为您编译)。只需用Cython编译你的代码就可以让它变得更快,但是你可以通过添加一些cdef语句来获得更大的速度。如果您使用use it with Numpy,那么您可以快速访问Numpy数组。通过以这种方式使用Cython,可以获得相当大的加速。但是,如果您提供了一些示例代码,将更容易帮助您。
https://stackoverflow.com/questions/4637190
复制相似问题