2011-12-26 53 views
3

我嘗試在Python文檔中列出http://docs.python.org/library/multiprocessing.html 特別是這兩個Windows上的例子:多處理在Windows上的Python

1)

from multiprocessing import Process 

def f(name): 
    print 'hello', name 

if __name__ == '__main__': 
    p = Process(target=f, args=('bob',)) 
    p.start() 
    p.join() 

2)

from multiprocessing import Process 
import os 

def info(title): 
    print title 
    print 'module name:', __name__ 
    print 'parent process:', os.getppid() 
    print 'process id:', os.getpid() 

def f(name): 
    info('function f') 
    print 'hello', name 

if __name__ == '__main__': 
    info('main line') 
    p = Process(target=f, args=('bob',)) 
    p.start() 
    p.join() 

這裏是問題:我沒有從子進程得到任何輸出。它雖然在Linux上工作。到底是怎麼回事?

+0

我建議你做異常處理。這會讓我們更清晰! – King 2011-12-26 23:18:23

+0

除了父進程中的os.getppid,我沒有得到任何異常。如果我刪除,我只是得到父母的輸出,並沒有打印任何兒童。 – Bruce 2011-12-26 23:23:01

回答

1

例1效果很好(我希望你把程序保存在一個文件中,然後執行它,否則它根本不會識別函數f)。

如果你想要父進程的id,例子2將不起作用。在Windows中沒有getppid。

只需打印os.getppid並執行,其輝煌一如既往!

請參考這個更多的Doug

+0

我將它保存在一個文件中。你有哪個版本的Python? – Bruce 2011-12-26 23:27:04

+0

2.6.5。但無論如何,除非您的身高不超過2.6或更高,否則這並不重要。因爲它是一個2.6 – King 2011-12-26 23:29:12

+1

幸運的新增加,所以我們有道格爲你服務! http://www.doughellmann.com/PyMOTW/multiprocessing/basics.html – King 2011-12-26 23:36:09