Why python script hangs after the main process exited
我在一个函数中有一些耗时的任务,我希望这个函数在主进程退出后也能运行。
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 | def do_time_consuming_thing(): // do time consuming task here time.sleep(30) def worker(): print"start a child process:" p = multiprocessing.Process(target=do_time_consuming_thing,args=()) p.start() print"child pid:%d" % p.pid sys.exit(0) // main process exit here. def test(): worker() |
但是,当我在shell命令行中运行上述代码时,在子进程完成之前,我不能返回到命令行提示符。
如何在sys.exit(0)完成后立即返回命令行提示。
尝试在
在代码中,替换退出行
1 | sys.exit(0) |
用这个:
1 | os._exit(0) |
从python文档中:
os._exit(n)
Exit the process with status n, without calling cleanup handlers, flushing stdio buffers, etc.
我不能说我推荐这种方法,但是如果需要使用多处理模块,它会回答您的问题。