相关疑难解决方法(0)

在多进程中运行绘图时出现matplotlib错误

我正在使用python的Multiprocess.Pool使用多个进程绘制一些数据,如下所示:

class plotDriver:
    def plot(self, parameterList):
        numberOfWorkers = len(parameterList)
        pool = Pool(numberOfWorkers)
        pool.map(plotWorkerFunction, parameterList)
        pool.close()
        pool.join()
Run Code Online (Sandbox Code Playgroud)

这是我班级的简化版本,驱动程序还包含我选择省略的其他内容.这plotWorkderFunction是一个单线程函数,它导入matplotlib并执行所有绘图和设置图形样式并将图形保存到一个pdf文件,并且每个工作程序不与另一个工作程序交互.

我需要多次调用这个绘图函数,因为我有很多parameterList,如下所示:

parameters = [parameterList0, parameterList1, ... parameterListn]
for param in parameters:
    driver = PlotDriver()
    driver.plot(param)
Run Code Online (Sandbox Code Playgroud)

如果parameters只包含一个parameterList(for循环只运行一次),代码似乎工作正常.但是,只要parameters包含多个元素,它就会一直失败,并且第二次在循环中发生以下错误消息.

Traceback (most recent call last):
File "plot.py", line 59, in <module>
  plottingDriver.plot(outputFile_handle)
File "/home/yingryic/PlotDriver.py", line 69, in plot
  pool.map(plotWrapper, workerParamList)
File "/home/yingryic/.conda/envs/pp/lib/python2.7/multiprocessing/pool.py", line 251, in map
  return self.map_async(func.iterable, chunksize).get()
File "/home/yingryic/.conda/envs/pp/python2.7/multiprocessing/pool.py", line 567, in get
  raise self._value
RuntimeError: In …
Run Code Online (Sandbox Code Playgroud)

python x11 matplotlib multiprocess

7
推荐指数
1
解决办法
542
查看次数

标签 统计

matplotlib ×1

multiprocess ×1

python ×1

x11 ×1