问题描述
利用supervisor启动一个含有mulitprocess模块的Python程序,该程序会生成子进程执行任务,但调用该mulitprocess的主进程会被子进程阻塞,如果不通过supervisor,直接执行该程序则主进程不会被子进程所阻塞,这是什么原因?
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
!/usr/bin/python
from multiprocessing import Pool
import subprocess
import os
import time
def task01():
time.sleep(30)
print "task01 start running"
with open('/opt/task_play_01.log', 'a') as f:
f.write("task01 start running\n")
f.write("task01 finished\n")
def main():
print "start spawn child"
task_executor = Process(target=task01)
print "child process is ready"
task_executor.start()
print "wait for executor finished"
if name == '__main__':
main()
你期待的结果是什么?实际看到的错误信息又是什么?
直接运行上述脚本的结果是:
start spawn child
child process is ready
wait for executor finished
task01 start running
通过supervisor启动上述脚本的结果为:
start spawn child
child process is ready
task01 start running
wait for executor finished