Sto usando la libreria di multiprocessing di python per creare diversi processi.Unire un gruppo di processi python con un timeout
from multiprocessing import Process
processes = [Process(target=function) for function in FUNCTIONS]
for p in processes:
p.start()
Voglio che vengano eseguiti per una certa durata e quindi se non sono stati completati, terminarli.
DURATION = 3600
un brutto modo per farlo è la seguente (male perché se i processi finiscono più velocemente di quanto DURATA, attende ancora per tutti DURATA):
from time import sleep
sleep(duration)
for p in processes:
p.join(0)
p.terminate()
Un altro brutto modo per farlo (male perché si può eventualmente prendere la N * DURATA per finire, dove N è il numero di processi):
for p in processes:
p.join(DURATION)
p.terminate()
cosa è un buon modo per fare questo?
Non so cosa stanno facendo i vostri processi ma normalmente usereste una variabile di segnalazione per segnalare al processo che è ora di finire. Quindi avresti modo DURATION, imposta il var e attendi di unirti. – RedX