Python readline阻塞while循环

时间:2014-05-15 19:57:06

标签: python input stdout readline

我一直坚持这个问题差不多一个小时,无法找到解决方案或解决问题。

这是我的问题:

我有一个子进程启动一个用户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,但我没有看到任何相关内容。

0 个答案:

没有答案