我已经使用Python队列设置了生产者/消费者模型。在一个生产者中,我正在使用scipy.misc.imread
读取图像。
在一个线程中读取图像还不够快,每个图像需要〜0.2s才能阅读。大约20mb/sec从SSD读取
我尝试使用Python的threading
模块添加另一个相同的线程。但是,在scipy.misc.imread
中花费的时间增加了大约两倍,从而导致2个线程读取图像的速度大约与1一样。
我敢肯定,即使随机读取,我的SSD也可以处理40MB/sec的吞吐量。dd
写作测试显示800MB/秒写速。
我想知道scipy.misc.imread
是否作为线程之间的关键区域运行?我期望 multiprocessing
避免问题吗?
scipy.misc.imread
可以免受多个线程的安全,但是每个呼叫都锁定了全局解释器,因此性能不会受益于多线程。
它可以从多处理,没有意外的问题中运作良好。