从多个线程运行scipy.misc.imread安全/高效吗?

时间:2017-04-26 03:41:56

标签: python multithreading scipy multiprocessing python-imaging-library

我使用python Queues设置了一个生产者/消费者模型。在一位制作人中,我使用scipy.misc.imread阅读图像。

在一个线程中读取图像的速度不够快,每个图像需要大约0.2秒才能读取。从SSD读取大约20MB /秒。

我尝试使用python' threading模块添加另一个相同的线程。但是,在scipy.misc.imread中花费的时间增加了大约两倍,导致2个线程读取图像的速度大约与1一样快。

我确信我的SSD可以处理40MB /秒的吞吐量,即使是随机读取也是如此。 dd写入测试显示800MB + /秒的写入速度。

我想知道scipy.misc.imread是否作为线程中的关键区域运行?我希望multiprocessing可以避免这个问题吗?

1 个答案:

答案 0 :(得分:1)

scipy.misc.imread对多个线程是安全的,但每次调用都会锁定全局解释器,因此性能不会受益于多线程。

它可以很好地处理多处理,没有意外的问题。