【问题标题】:Does it make sense to run numpy and matplotlib code with threads?使用线程运行 numpy 和 matplotlib 代码是否有意义?
【发布时间】:2013-11-29 19:13:53
【问题描述】:

我为我的每个实验室实验编写了一个 Python 程序来进行数据分析(numpyscipy)和绘图(matplotlib)。目前,我使用matplotlib.pyplot 状态机接口,这可能不适合多线程。因此,我将为此研究 OO 接口。

但是,由于 Python 中的全局解释器锁定,如果我将数据分析的独立部分放在一个线程中,它是否会变得更快?

【问题讨论】:

  • numpy 中的大多数数值计算在数字运算时都会释放 GIL。因此,如果您的数据分析由几个 numpy 函数调用组成,然后运行很长时间,那么是的,您可以使用多线程在计算进行时保持其他东西的活动,甚至将计算拆分为几个线程。
  • 它是一个非交互式程序,所以“保持东西活着”不是问题。我想我会尝试一下并进行速度测试。

标签: multithreading python-3.x numpy matplotlib


【解决方案1】:

我刚刚试用了multiprocessing 而不是threading。事实证明,我只需要用multiprocessing.Manager().dict() 替换我的“最终结果字典T”,即使使用pyplot 状态机也能正常工作。

之前:

real    0m10.906s
user    0m10.411s
sys     0m0.312s

multiprocessing:

real    0m8.979s
user    0m12.707s
sys     0m0.546s

所以它看起来不像是一个巨大的改进,但这只是因为其中一个部分需要很长时间,所以并行运行的并不多。我猜multiprocessing 就是答案。

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多