Я хочу TraceRoute некоторые IP в файле с GEvent, вот мой код:Как судить весь подпроцесс в gevent?
#!/usr/bin/env python
import gevent
from gevent import subprocess
gevent.monkey.patch_thread
ip_list = open('ips.txt')
data = [i for i in ip_list]
length = len(data)
process_pool = []
for i in range(length):
process = subprocess.Popen(['sudo','traceroute','-T', '-m', '8', data[i]], stdout=subprocess.PIPE)
process_pool.append(process)
print len(process_pool)
gevent.wait(process_pool, timeout=10)
count = 0
for i in process_pool:
if i.poll() is not None:
count += 1
print i.stdout.read()
else:
print ('job is still running')
print count
это работает хорошо, но я не знаю, как увидеть, если все трассировку закончится, если я изменю значение таймаута. Весь процесс может закончиться, но я не знаю, сколько ip в файле, поэтому код не может иметь дело с обычным случаем. Как это исправить?
вы можете использовать 'subprocess.check_output()' для получения всего вывода сразу – jfs