首页 > 解决方案 > 使用 matplotlib 子图进行多处理不起作用

问题描述

我想用模块加快我的进程,multiprocessing但它总是显示一个空白图。

这是一些重现问题的代码:

def plot_(ax, chart):
    x = np.arange(30)
    if chart == 1:
        y = np.exp(x)
    else:
        y = np.arange(30)
    # plt.xscale('log', base=10)
    ax.barh(x, y)
    ax.set_title('chart %d' % chart)
import matplotlib.pyplot as plt
import multiprocessing
from plot_ import plot_
fig, axs = plt.subplots(1, 2, sharey=True, figsize=(12, 8))
p1 = multiprocessing.Process(target=plot_, args=(axs[0], 0))
p2 = multiprocessing.Process(target=plot_, args=(axs[1], 1))
p1.start()
p1.join()
p2.start()
p2.join()
plt.show()

结果: 带多重处理

如果我不使用多处理:

plot_(axs[0], 0)
plot_(axs[1], 1)

没有多重处理

标签: pythonmatplotlibmultiprocessing

解决方案


推荐阅读