2017-01-01 3 views
2

このプログラムはエラーは表示されませんが、ポイントなしで空白のプロットが生成されます。後ほどこのコードを変更して、多くのプロセスが共有matplotlib散布図を変更するために並行して作業できるようにしたいと考えています。スキャッタプロットでマネージャを使用してマルチプロセッシングを行っていません

from multiprocessing.managers import BaseManager, NamespaceProxy 
from multiprocessing import Process 
import matplotlib.pyplot as plt 
import numpy as np 

def plotter(res): 
    print(res.ax,res.fig) 
    res.ax.scatter(np.random.normal(0,20,(100,)),np.random.uniform(0,20,(100,)),s=1) 
    res.fig.savefig('man2.png') 


class PlotClass(): 
    fig = plt.figure() 
    ax = fig.add_subplot(111) 

    def __init__(self): 
     print('Test') 


class MyManager(BaseManager): 
    pass 

class MyAttProxy(NamespaceProxy): 
    # We need to expose the same __dunder__ methods as NamespaceProxy, 
    _exposed_ = ('__getattribute__', '__setattr__', '__delattr__') 

MyManager.register('Plot', PlotClass,MyAttProxy) 

if __name__ == '__main__': 
    manager = MyManager() 
    manager.start() 
    plotscat = manager.Plot() 
    pr = Process(target=plotter,args=(plotscat,)) 
    pr.start() 
    pr.join() 
    plotscat.fig.savefig('fig.png') 

答えて

0

たぶん、あなたは、あなたが

def plotter(res): 
    print(res.ax,res.fig) 
    res.ax.scatter(np.random.normal(0,20,(100,)),np.random.uniform(0,20,(100,)),s=1) 
    res.fig.canvas.draw_idle() 
    res.fig.savefig('man2.png') 
+0

あなたの解決策で問題が解決されていません散布に追加した後の図を描き直す必要があります。 –

関連する問題