我有2个文件在main.py和infinit.py,如下图所示:如何在运行过程中获取子过程输出?
main.py
#!/usr/bin/python
import logging
import subprocess
import sys
logging.basicConfig(level=logging.INFO)
def forever():
cmd = [sys.executable, 'infinit.py']
while 1:
try:
print 'running new instance of:'
print ' '.join(cmd)
popen = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, universal_newlines=True)
for line in iter(popen.stderr.readline, ""):
print line,
for line in iter(popen.stdout.readline, ""):
print line,
except Exception as e:
print 'Something bad happend'
logging.error(e)
if __name__ == '__main__':
forever()
infinit.py
#!/usr/bin/python
import logging
logging.basicConfig(level=logging.INFO)
i = 0
while 1:
i += 1
logging.info('i: {0}'.format(i))
print i
我跑main.py和我希望在我的控制台中看到两者(打印和日志记录)。 我也希望它能在windows和linux上运行。 另外它有可能在windows空闲中工作(打印和日志记录)?
我有一个类似的问题,这是我如何解决它。 http://stackoverflow.com/questions/9137010/asynchronously-retrieving-information-from-a-process/9138042#9138042。 – John