2009-06-23 87 views
3

我的問題是:蟒蛇多重處理管理器

我有3個特效,想共享從同一類和幾個隊列加載的配置。我想產生另一個proc作爲multiprocessing.manager來共享這些信息。

我該怎麼做?有人可以購買一個示例代碼,避免使用全局變量並使用多處理管理器類嗎?

Python文檔並非如此有益:-(

+0

Python文檔通常是沒有幫助的:-D – johndodo 2012-01-26 09:15:31

回答

3

我發現this專門的章節有幫助Python的多文檔下面的程序:

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() 

演示了主腳本(這是「多處理器管理器「在你的問題)創建3個進程,併發送給他們每個配置(這裏顯示爲一個字典)

每個進程讀取配置,處理它(這裏,只是睡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

是的,但我想辦法避免將全局變量 – DrFalk3n 2009-06-24 07:28:26