Я хочу
Уже существует уже много записан на этих видах вещей, но я чувствую, что не вполне нашел изящное pythonic решение, которое я ищу. Я также пытаюсь сохранить вещи относительно читаемыми (и короткий) для кого-то абсолютно незнакомый с Python.
Мой подход до сих пор (см. код ниже) был:
Я старался избегать решения, которое периодически опрашивало процессы, но я не уверен почему.
Существует ли лучший подход?
import subprocess,multiprocessing,signal
import sys,os,time
def sigterm_handler(signal, frame):
print 'You killed me!'
for p in pids:
os.kill(p,9)
sys.exit(0)
def sigint_handler(signal, frame):
print 'You pressed Ctrl+C!'
sys.exit(0)
signal.signal(signal.SIGINT, sigint_handler)
signal.signal(signal.SIGTERM, sigterm_handler)
def f_wrapper(d):
print str(d) + " start"
p=subprocess.call(["sleep","100"])
pids.append(p.pid)
print str(d) + " done"
print "Starting to run things."
pids=[]
for i in range(5):
p=multiprocessing.Process(target=f_wrapper,args=(i,))
p.daemon=True
p.start()
print "Got things running ..."
while pids:
print "Still working ..."
time.sleep(1)