在多进程中运行打印时出现matplotlib错误

2024-09-27 00:18:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是python的多进程.池使用多个进程绘制一些数据,如下所示:

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

这是我的类的简化版本,驱动程序还包含我选择忽略的其他内容。plotWorkderFunction是一个单线程函数,它导入matplotlib并执行所有的打印和设置地物样式,并将绘图保存到一个pdf文件中,并且每个worker都不与其他worker交互。在

我需要多次调用这个plot函数,因为我有很多参数列表,如下所示:

^{pr2}$

如果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 set_text: could not load glyph
X Error: BadIDChoice (invalid resouce ID chosen for this connection) 14
  Extension: 138 (RENDER)
  Minor opcode: 17 (RenderCreateGlyphSet)
  Resouce id: 0xe00002
 : Fatal IO error: client killed

你知道出什么问题了吗?我该怎么解决?在


Tags: 函数inpyselfmaphomeplot进程

热门问题