Я пытаюсь написать функцию func_timeout () , которая должна остановить другую функцию после указанного тайм-аута. Использование многопроцессорной функции bar_timeout в основном делает это для функции bar () .
In func_timeout () цель target =bar Аргумент должен быть назначен в качестве основного аргумента (что-то вроде того, что нужно видеть в последних строках кода).
Есть идеи, как с этим справиться?
def bar(q):
for i in range(10):
time.sleep(1)
if i==5:
q.put(1)
break
def bar_timeout(timeout=10):
print("start")
q=multiprocessing.Queue();
p = multiprocessing.Process(target=bar,args=(q,))
p.start()
p.join(timeout)
if p.is_alive():
print "process alive, killing it"
p.terminate()
print("process terminated")
return 0
else:
try:
a=q.get()
print("got q value")
return a
except:
print("Exception raised")
return 0
def func_timeout(timeout=10, keywordparameter={'target':'bar'}:
...see above
p = multiprocessing.Process(keywordparameter,args=(q,))
...see above