Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 绕开子流程不获得回复?_Python_Python 2.7_Subprocess_Nonblocking - Fatal编程技术网

Python 绕开子流程不获得回复?

Python 绕开子流程不获得回复?,python,python-2.7,subprocess,nonblocking,Python,Python 2.7,Subprocess,Nonblocking,我有一个守护进程,它查询硬件并根据响应采取操作。我注意到,由于某种原因,我得到回复的可能性很小,并且我的守护进程启动了一个新的自身实例 这是因为我的代码由于communicate()而被阻塞,并且它从未得到回复,因此从未返回 ps = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) out = ps.communicate() return out 我怎样才能避免这个问题?我在linux上

我有一个守护进程,它查询硬件并根据响应采取操作。我注意到,由于某种原因,我得到回复的可能性很小,并且我的守护进程启动了一个新的自身实例

这是因为我的代码由于
communicate()
而被阻塞,并且它从未得到回复,因此从未返回

 ps = subprocess.Popen(cmd,
 stdout=subprocess.PIPE,
 stderr=subprocess.STDOUT)
 out = ps.communicate()
 return out
我怎样才能避免这个问题?我在
linux
上使用
2.7
,我看到
3.3+
子进程中有可用的超时,但我没有,有没有任何非阻塞方式来实现这一点?信号报警器工作吗

试试这个:

ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = ps.communicate()
print out
print err