我正在使用Linux 18.04.2 LTS 64位计算机。
并行化的函数进行绘图,并使用savefig
模块将绘图以pdf格式保存。
当前,我正在运行100次迭代。奇怪的是,第0次,第1次,第2次或第3次迭代会生成正确的pdf文件,而所有其他生成的pdf文件的大小均为0字节。
每次迭代都会产生类似的消息:
Gdk消息:14:41:40.404:python2.7:致命IO错误11(资源 X服务器:0上暂时不可用)。
任务完成后,进程冻结,我必须重新引导系统。当我注释掉绘图部分时,代码可以完成工作,但是合并绘图部分会导致上述错误消息。
这些是执行多处理的代码行。如果在没有这些行的情况下调用该函数,则会生成一个正确的pdf文件(即,代码按顺序运行)
from multiprocessing import Pool
import time
if __name__ == "__main__":
# Step 1: Init multiprocessing.Pool()
pool = Pool()
results = []
# Step 2: `pool.apply` the `mcoverpc()`
print('START')
start_time = int(round(time.time()))
data = list(range(100))
result_objects = [pool.apply_async(function, args=(num,arg1,arg2,arg3)) for num in data]
# Step 3: Don't forget to close
result_num = [r.get()[0] for r in result_objects]
result_pc = [r.get()[1] for r in result_objects]
result_fit_details = [r.get()[2] for r in result_objects]
result_redchi = [r.get()[3] for r in result_objects]
pool.close()
pool.terminate()
print('END', int(round(time.time()))-start_time)