我已经使用 python 队列设置了生产者/消费者模型。在一位制作人中,我正在使用 scipy.misc.imread 读取图像。
在一个线程中读取图像不够快,读取每张图像大约需要 0.2 秒。从 SSD 读取大约 20MB/秒。
我尝试使用 python 的 threading 模块添加另一个相同的线程。然而,花费在 scipy.misc.imread 上的时间大约增加了一倍,导致 2 个线程读取图像的速度大约与 1 个线程一样快。
我确信我的 SSD 可以处理 40MB/秒的吞吐量,即使是随机读取。 dd 写入测试显示写入速度为 800MB+/秒。
我想知道 scipy.misc.imread 是否作为线程间的临界区运行?我希望 multiprocessing 避免这个问题吗?
请您参考如下方法:
scipy.misc.imread 对多线程是安全的,但每次调用都会锁定全局解释器,因此性能不会受益于多线程。
它在多处理中运行良好,没有意外问题。
