了解Python 多重处理(来自PMOTW文章),并且希望澄清一下join()方法的。
在2008年的旧教程中,它指出,没有p.join()以下代码中的调用,“子进程将处于空闲状态而不会终止,成为必须手动杀死的僵尸”。
from multiprocessing import Process
def say_hello(name='world'):
    print "Hello, %s" % name
p = Process(target=say_hello)
p.start()
p.join()我添加的打印输出PID,以及一个time.sleep测试,并就我所知道的,在自己的进程终止:
from multiprocessing import Process
import sys
import time
def say_hello(name='world'):
    print "Hello, %s" % name
    print 'Starting:', p.name, p.pid
    sys.stdout.flush()
    print 'Exiting :', p.name, p.pid
    sys.stdout.flush()
    time.sleep(20)
p = Process(target=say_hello)
p.start()
# no p.join()20秒内:
936 ttys000    0:00.05 /Library/Frameworks/Python.framework/Versions/2.7/Reso
938 ttys000    0:00.00 /Library/Frameworks/Python.framework/Versions/2.7/Reso
947 ttys001    0:00.13 -bash20秒后:
947 ttys001    0:00.13 -bash行为与p.join()在文件末尾添加回的行为相同。本周Python模块为模块提供了非常易读的解释 ; “要等到进程完成工作并退出后,请使用join()方法。”,但看来至少OS X仍在这样做。
我也想知道该方法的名称。该.join()方法在此处串联吗?它是在连接过程的结尾吗?还是只是与Python的本地.join()方法共享一个名称?
CPU, Memory resources是与父进程分开的实际对象,然后join在子进程完成后再次返回吗?