在python中练习线程

hel*_*dre 2 python multithreading image-manipulation

我知道Python有一个全局锁,我读过Glyph对python多线程的解释.但我还是想尝试一下.我决定做的一个简单(概念)任务是对图片进行水平和垂直边缘检测.

这是正在发生的事情(伪代码):

for pixels in picture:
    apply sobel operator horizontal
for pixels in picture:
    apply sobel operator vertical
Run Code Online (Sandbox Code Playgroud)

关于索贝尔运营商的信息.

这两个循环可以完全相互独立地运行,因此是多线程的主要候选者.(在任何非常大的图片上运行这两个循环可能需要10秒以上).但是,当我尝试threading在python中使用该模块时,由于全局锁定,它需要两倍的时间.我的问题是,我是否应该放弃在python的两个线程中执行此操作并尝试使用其他语言的所有希望?如果我能够继续前进,我应该使用哪些模块?如果没有,我应该用什么语言进行实验?

Jay*_*Jay 7

Python 2.6中现在包括mulitprocessing模块(前身为处理在旧版本的Python模块).

它与线程模块具有基本相同的接口,但是将执行启动到单独的进程而不是线程.这使得Python可以利用多个内核/ CPU,并且与线程模块方法相比,可以很好地扩展CPU密集型任务.