Skip to main content
 首页 » 编程设计

python之scipy.misc.imread 从多线程运行是否安全/高效

2025年02月15日3098°冷暖

我已经使用 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 对多线程是安全的,但每次调用都会锁定全局解释器,因此性能不会受益于多线程。

它在多处理中运行良好,没有意外问题。