supervisor启动一个含有mulitprocess模块的python程序,主进程被其子进程阻塞

问题描述

利用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

阅读 1.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题