我使用PIL来做图像处理,我试着将彩色图像转换成灰度图像,所以我写了一个Python函数来做这件事,同时我知道PIL已经提供了一个convert函数。
但我用Python编写的版本需要大约2秒才能完成灰度化,而PIL的convert几乎可以立即完成。所以我读了PIL的代码,发现我写的算法几乎是一样的,但是PIL的convert是用C或C++写的。
那么这就是造成性能不同的问题吗?
发布于 2013-01-12 11:07:20
是的,用Python和C编写相同的算法,C实现会更快。对于通常的Python解释器,也就是众所周知的CPython,这是绝对正确的。另一个实现是PyPy,它使用JIT,因此可以达到令人印象深刻的速度,有时和C实现一样快。但是在CPython下运行,Python会更慢。
发布于 2013-01-12 13:11:05
如果你想做图像处理,你可以使用
OpenCV(cv2),SimpleCV,NumPy,SciPy,Cython,NUMBA...
OpenCV,SimpleCV SciPy已经有很多图像处理例程了。
NumPy能够以c语言的速度对数组进行操作。
如果您想在Python中使用循环,您可以使用Cython将带有静态声明的python代码编译为外部模块。
或者你可以使用Numba来做JIT转换,它可以将你的python代码转换成机器二进制代码,并且会给你接近c语言的速度。
https://stackoverflow.com/questions/14289657
复制相似问题