我一直坚持这个问题差不多一个小时,无法找到解决方案或解决问题。
这是我的问题:
我有一个子进程启动一个用户S,它监听一些实时数据发布者P. P随机发布数据,我希望在一个时间内(比如说30秒)获得所有数据。
subscriber = subprocess.Popen('/start/process', stdout = PIPE, stderr = PIPE)
max_time = 30
inital_time = time.time()
while time.time()-initial_time < max_time:
try:
print(subscriber.stdout.readline())
except:
pass
编译后,当P没有发布数据时,我发现readline()阻塞了while循环。循环在打印处停止,直到P发布一些数据,然后循环打印数据并进入条件检查。因此,如果P从不发布数据,程序永远不会结束。
我假设这是因为readline需要某种输入才能返回,所以我的问题是如何解决这个问题?我看过this,但我没有看到任何相关内容。