Python3在使用多进程池时不处理matplotlib图

时间:2017-03-09 15:50:43

标签: python python-3.x matplotlib multiprocessing

我有一个小脚本创建不同的图。由于没有共享数据,我可以进行一些多处理。使用python2.7,没问题。使用python3.6,我似乎无法使其工作。 我正在使用池(https://docs.python.org/3/library/multiprocessing.htmlhttps://docs.python.org/2/library/multiprocessing.html)因为我不共享对象或任何东西。 对于Python3,我遇到了没有回溯的崩溃(图= plt.figure(number))。 我在MacOs X sierra上运行。我认为问题与此主题相同(Saving multiple matplotlib figures with multiprocessing)。不幸的是,这个问题并没有真正解决,因为它不是主要问题。

一个快速的答案是使用python2.7,但我的其他工作依赖于python3 +功能。 关于如何至少跟踪回溯的任何想法(详细模式没有显示与崩溃有关的任何内容),然后解决这个问题?

非常感谢

这是产生错误的最小代码,来自上面提到的线程。 (此代码将在脚本的文件夹中创建4个文件。)

import matplotlib.pyplot as plt
import numpy.random as random
from multiprocessing import Pool


def do_plot(number):
    fig = plt.figure(number)
    a = random.sample(100)
    b = random.sample(100)

    plt.scatter(a, b)

    plt.savefig("%03d.jpg" % (number,))
    plt.close()

    print("Done ", number)


if __name__ == '__main__':
    pool = Pool()
    pool.map(do_plot, range(4))

0 个答案:

没有答案