python 管道 非阻塞_子进程非阻塞从管道读取

我有一个程序,需要几个小时来完成,必须整合到一个现有的程序。我有一个脚本,它通过子进程模块运行程序,这很好地工作。但无法判断该计划有多大进展。这个程序确实向stdout输出一些实时信息,所以我想我可以从管道中读取一些信息。在

但是我不能正确地工作。我的脚本似乎阻碍了实时从管道中读取数据。在

我制作了一个简单的脚本来演示:import subprocess

worklist = [

{

'name' : '1: ',

'cmd' :r'/python27/python.exe printer.py',

'pid' :None

},{

'name' : '2: ',

'cmd' :r'/python27/python.exe printer.py',

'pid' :None

},{

'name' : '3: ',

'cmd' :r'/python27/python.exe printer.py',

'pid' :None

}

]

for work in worklist:

work['pid'] = subprocess.Popen(work['cmd'], stdout=subprocess.PIPE, stderr=subprocess.PIPE,bufsize=0)

while True:

for work in worklist:

for line in work['pid'].stdout:

print work['name'] + str(line)

if all(item['pid'].poll() is not None for item in worklist):

break

for work in worklist:

work['pid'].communicate

在打印机.py包含:

^{pr2}$

所以我希望看到的是,它打印每个打印机.py“我实时打电话过来。不过,这一切都在同一时间完成了。在

有没有办法只使用子进程模块或其他python内置程序来解决这个问题?在

我在一台windows机器上,所以我不能使用pexpect,另外,由于这将不得不在很多系统上使用,我不想引入依赖项。。。或者至少尽可能少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值