2011-12-26 24 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