守护进程从未启动



我在理解为什么deamon进程从不产生"启动/退出"输出时遇到问题。似乎在我调用n.start()的那一刻,这个过程就被扼杀了

import multiprocessing
import time
import sys
def daemon():
    p = multiprocessing.current_process()
    print 'Starting:', p.name, p.pid
    sys.stdout.flush()
    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()
    time.sleep(3)
    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
    d.start()
    n.start()

守护进程通常与stdin/stdout/stderr描述符断开连接,因为它们不需要与用户进行任何交互。所以,如果你想记录一些,我认为你需要给sys.stdout分配一些自定义流(也许是一些写入文件的记录器)

UPD:您可以使用连接到父进程的管道来测试代码。使用这个管道,您可以将消息传输到父进程,而不是STDOUT。

相关内容

  • 没有找到相关文章

最新更新