【发布时间】:2017-05-16 13:01:51
【问题描述】:
我有一个守护进程,它正在查询硬件并根据响应采取行动。我注意到,由于某种原因,我得到回复的可能性很小,并且我的守护进程会启动一个新的自身实例。
这是因为我的代码由于 communicate() 而被阻塞,它永远不会得到回复,所以永远不会返回。
ps = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
out = ps.communicate()
return out
我可以通过什么方式避免这个问题?我在linux 上使用2.7,我看到3.3+ 在subprocess 中有超时可用,但我没有,任何非阻塞方式可以做到这一点?信号报警器有用吗?
【问题讨论】:
标签: python python-2.7 subprocess nonblocking