Python 如何检查子流程是否正在轮询,但未接收数据

Python 如何检查子流程是否正在轮询,但未接收数据,python,subprocess,polling,Python,Subprocess,Polling,我使用subprocess.popen命令扫描频率 我的程序接收数据,但是,我很难检测“消息的结尾” 因此,我正在寻找如何检查.poll()命令是否正在轮询,但未接收数据的代码 据我在谷歌发现的,当没有收到数据时,行应该是“”,只有一次,程序通过打印几行空行来响应。不幸的是,这只是一次,但是,这可能是我正在寻找的。也就是说,2或3个空行可能也表示没有要接收的数据 multimon_ng = subprocess.Popen("rtl_fm -f 169.65M -M fm -s 22050 -p

我使用
subprocess.popen
命令扫描频率

我的程序接收数据,但是,我很难检测“消息的结尾”

因此,我正在寻找如何检查
.poll()
命令是否正在轮询,但未接收数据的代码

据我在谷歌发现的,当没有收到数据时,行应该是“”,只有一次,程序通过打印几行空行来响应。不幸的是,这只是一次,但是,这可能是我正在寻找的。也就是说,2或3个空行可能也表示没有要接收的数据

multimon_ng = subprocess.Popen("rtl_fm -f 169.65M -M fm -s 22050 -p 43 -g 30 | multimon-ng -a FLEX -t raw -",
  stdout = subprocess.PIPE,
  stderr = open('error.txt', 'a'),
  shell = True)

while True:
  multimon_ng.poll()
line = multimon_ng.stdout.readline()
print(line)

如何检查子进程是否正在轮询?

如果进程仍在运行,
poll()
将返回
None
。否则它将返回退出代码。()

但是,我不确定这是否会对您有所帮助:

  • 如果要等待进程退出,只需调用
    wait()
    ,而不是使用
    poll()
  • 如果希望程序在其生命周期内保持运行并响应多条消息,则需要确切了解“消息结束”信号的外观,在循环中调用stdout.readline(),并在不退出该循环的情况下检测和处理该信号