我有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