我使用python Queues设置了一个生产者/消费者模型。在一位制作人中,我使用scipy.misc.imread
阅读图像。
在一个线程中读取图像的速度不够快,每个图像需要大约0.2秒才能读取。从SSD读取大约20MB /秒。
我尝试使用python' threading
模块添加另一个相同的线程。但是,在scipy.misc.imread
中花费的时间增加了大约两倍,导致2个线程读取图像的速度大约与1一样快。
我确信我的SSD可以处理40MB /秒的吞吐量,即使是随机读取也是如此。 dd
写入测试显示800MB + /秒的写入速度。
我想知道scipy.misc.imread
是否作为线程中的关键区域运行?我希望multiprocessing
可以避免这个问题吗?
答案 0 :(得分:1)
scipy.misc.imread
对多个线程是安全的,但每次调用都会锁定全局解释器,因此性能不会受益于多线程。
它可以很好地处理多处理,没有意外的问题。