Python Subprocess Popen 管道阻塞问题分析解决

http://ju.outofmemory.cn/entry/279026

 

场景:1》不断播放mp3文件;

2》使用订阅发布模式保持tcp长连接,从服务器接收信息

 

造成程序hang死,但是具体是1,2哪种造成的,未排查。在Python里启动命令子进程,慎重。PIPE造成管道阻塞,连带程序假死,wait()阻塞将输出信息输出到管道,communicate()则写入内存,若内存不够,则使用文件模式:

p = subprocess.Popen(command,shell=True,stdout=open("process.out", "w"), close_fds=True)
#p.communicate() #放内存
p.wait() #放管道

 

posted @ 2018-01-20 17:26  love/coder  阅读(4307)  评论(0编辑  收藏  举报