我知道Python有一个全局锁,我读过Glyph对python多线程的解释.但我还是想尝试一下.我决定做的一个简单(概念)任务是对图片进行水平和垂直边缘检测.
这是正在发生的事情(伪代码):
for pixels in picture: apply sobel operator horizontal for pixels in picture: apply sobel operator vertical
关于索贝尔运营商的信息.
这两个循环可以完全相互独立地运行,因此是多线程的主要候选者.(在任何非常大的图片上运行这两个循环可能需要10秒以上).但是,当我尝试threading
在python中使用该模块时,由于全局锁定,它需要两倍的时间.我的问题是,我是否应该放弃在python的两个线程中执行此操作并尝试使用其他语言的所有希望?如果我能够继续前进,我应该使用哪些模块?如果没有,我应该用什么语言进行实验?
Python 2.6中现在包括mulitprocessing模块(前身为处理在旧版本的Python模块).
它与线程模块具有基本相同的接口,但是将执行启动到单独的进程而不是线程.这使得Python可以利用多个内核/ CPU,并且与线程模块方法相比,可以很好地扩展CPU密集型任务.