python multiprocessing 设置生成进程等待

2024-06-20

是否可以生成一些进程并将生成进程设置为等待生成的进程完成?下面是我用过的一个例子。

import multiprocessing
import time
import sys

def daemon():
    p = multiprocessing.current_process()
    print 'Starting:', p.name, p.pid
    sys.stdout.flush()
    time.sleep(2)
    print 'Exiting :', p.name, p.pid
    sys.stdout.flush()

def non_daemon():
    p = multiprocessing.current_process()
    print 'Starting:', p.name, p.pid
    sys.stdout.flush()
    print 'Exiting :', p.name, p.pid
    sys.stdout.flush()

if __name__ == '__main__':
    d = multiprocessing.Process(name='daemon', target=daemon)
    d.daemon = True

    n = multiprocessing.Process(name='non-daemon', target=non_daemon)
    n.daemon = False

    print "start main"
    d.start()
    time.sleep(1)
    n.start()
    print "stop main"

将打印

start main
Starting: daemon 2809
stop main
Starting: non-daemon 2810
Exiting : non-daemon 2810

虽然我想要:

start main
messages from other services 
stop main

d.join() 会阻塞主线程 http://docs.python.org/2/library/multiprocessing.html#multiprocessing.Process.join until d完成。 因此,要获得您想要的打印语句的顺序,请将join之前print "stop main":

print "start main"
d.start()
time.sleep(1)
n.start()
d.join()
n.join()
print "stop main"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python multiprocessing 设置生成进程等待 的相关文章

随机推荐