Python多线程的危险?

时间:2014-02-15 15:04:59

标签: python multithreading

我有一个程序,它结合了多个(最多48个图像),这些都是彩色编码图像。只运行32个1024x768图像需要7.5分钟来处理图像并给出输出图像。我正在使用getdata(wxPython)单独执行每个图像,然后逐个像素地遍历每个图像以获取基础值并在创建/显示最终图像之前将其添加到最终图像列表。整个程序就像我希望它使用一个SLOW异常一样工作。完成运行需要7.5分钟。如果我想做任何稍微不同的事情,我必须从头开始。

如果我要使用线程来浏览图像我应该徘徊,这应该可以节省时间,但我担心遇到一个问题的可能性...同时通过不同的线程调用相同的代码。这有什么值得担心的吗?还有一些我没想到的东西我应该担心吗?

1 个答案:

答案 0 :(得分:0)

了解GIL - 线程无法解决您的问题。它可以实现,当你可以将计算表示为某种管道时,或者当它使用大量IO时(因为只有这时同步才有用,如果你想在几个线程上运行相同的东西而不是单线程循环,你最终会得到随机的计算顺序,当时只有一个线程)。

您可能希望将数据(可能是图片的一部分,可能是整个图片)映射到many processes,因为它们可以并行工作,而不需要处理GIL,因为它们将是不同的解释器进程。您可以在此处使用Pool