2009-06-23 28 views
3

私の問題は、次のとおりです。Pythonのマルチプロセッシング・マネージャー

私は同じクラスからロードされた設定とキューのカップルを共有したいと思い3つのprocsのを持っています。これらの情報を共有するために、別のprocをmultiprocessing.managerとして作成したいと思います。

どうすればいいですか?誰かが、グローバル変数の使用を避け、マルチプロセッシング・マネージャー・クラスを使用するサンプル・コードを購入できましたか?

Pythonのドキュメントは、私が参考にPythonのマルチプロセッシングドキュメント内this特定のセクションを見つけましたので、参考になっ:-(

+0

Pythonのドキュメントは通常は便利:-D – johndodo

答えて

3

ませんでした次のプログラム:

from multiprocessing import Process, Queue, current_process 
import time 

def f(q): 
    name = current_process().name 
    config = q.get() 
    print "%s got config: %s" % (name, config) 
    print "%s beginning processing at %s" % (name, time.asctime()) 
    time.sleep(5) 
    print "%s completing processing at %s" % (name, time.asctime()) 

if __name__ == '__main__': 
    q = Queue() 
    processes = [] 
    cfg = { 'my' : 'config', 'data' : 'here' } 
    for i in range(3): 
     p = Process(target=f, args=(q,)) 
     processes.append(p) 
     p.start() 
     q.put(cfg) 

    for p in processes: 
     p.join() 

」であるメインスクリプトを(実証

各プロセスは設定を読み込み、処理を行います(ここでは5秒間スリープ状態になります)終了する。このスクリプトを実行しているからの出力は次のとおりです。

Process-1 got config: {'my': 'config', 'data': 'here'} 
Process-1 beginning processing at Tue Jun 23 23:34:23 2009 
Process-2 got config: {'my': 'config', 'data': 'here'} 
Process-2 beginning processing at Tue Jun 23 23:34:23 2009 
Process-3 got config: {'my': 'config', 'data': 'here'} 
Process-3 beginning processing at Tue Jun 23 23:34:23 2009 
Process-1 completing processing at Tue Jun 23 23:34:28 2009 
Process-2 completing processing at Tue Jun 23 23:34:28 2009 
Process-3 completing processing at Tue Jun 23 23:34:28 2009 
+0

そうですが、私はまたmultiprocessing.managerクラスを使用したいグローバルVARS – DrFalk3n

+0

を渡して回避する方法をご希望の – DrFalk3n

+1

申し訳ありませんが、グローバルバールはどこに渡されていますか?あなたのために –

関連する問題