Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib图形不会保存在多处理中_Python_Matplotlib_Multiprocessing_Ipython - Fatal编程技术网

Python matplotlib图形不会保存在多处理中

Python matplotlib图形不会保存在多处理中,python,matplotlib,multiprocessing,ipython,Python,Matplotlib,Multiprocessing,Ipython,我无法在多处理生成的进程中保存matplotlib图形。基于我发现的大量示例,下面的测试代码应该生成一个名为:testfig.png的文件,但是,当该代码在ipython中运行时,png文件从未实际创建 from multiprocessing import Process def makeplot(): import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add

我无法在多处理生成的进程中保存matplotlib图形。基于我发现的大量示例,下面的测试代码应该生成一个名为:testfig.png的文件,但是,当该代码在ipython中运行时,png文件从未实际创建

    from multiprocessing import Process

    def makeplot():
        import matplotlib.pyplot as plt
        fig = plt.figure()
        ax = fig.add_subplot(111)
        ax.plot([1,2,3],[3,4,5],'o')
        fig.savefig('testfig.png')
        plt.close()
        return None

    p = Process(target = makeplot)
    p.daemon = True
    p.start()
    p.join()

它在这里工作(FreeBSD OS,AMD64平台),在IPython和cpython中都可以。您使用的是什么操作系统?如果您运行
makeplot
而不包装它,它会创建文件吗?也许可以指定文件的完整路径?您可以尝试在
savefig
中使用绝对路径。可能是您的进程生成了一个不同的工作目录(这在我的机器上没有发生,所以这只是一个猜测)。如果您在标准python中运行代码,代码是否工作?感谢您的评论-我在OS X 10.7.5上运行python 2.7.3 | 64位。如果我在ipython中运行makeplot,它会创建文件。指定完整路径并不能解决此问题。最后—是的,当在标准python中运行时,代码可以工作。