Utilizzo un modulo di elaborazione multipla per l'elaborazione parallela. Snippet di codice a soffietto cerca il nome file della stringa in posizione X e restituisce il nome del file in cui è stata trovata la stringa. Ma in alcuni casi ci vuole molto tempo per cercare il processo quindi stavo cercando di uccidere il processo di ricerca con più di 300 secondi. Per questo ho usato timeout == 300 come dato di seguito, questo uccide il processo di ricerca ma esso uccide il generazione di processi figlio per codice muggito.Processo di kill automatico e processo figlio del pool di multiprocessing
ho cercato di trovare modo multiplo, ma senza successo:/
come posso uccidere processo padre da piscina insieme al suo processo figlio?
import os
from multiprocessing import Pool
def runCmd(cmd):
lresult = os.popen(cmd).read()
return lresult
main():
p = Pool(4)
data_paths = [list of paths of store data]
search_cmds = [ "SearchText.exe %s < %s"%(data_path, filename) for data_path in data_paths ]
results = [p.apply_async(runCmd, (cmd,), callback = log_result) for cmd in search_cmds]
try:
for result in results:
root.append(result.get(timeout=300))
#rool holds the result of search process
except TimeoutError:
for c in multiprocessing.active_children():
print '----->',c.pid
os.kill(c.pid, signal.SIGTERM)
p.close()
p.join()
if __name__ == '__main__':
main()
Albero Process in Process Explorer:
cmd.exe
------python.exe
----------------python.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
----------------python.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
----------------python.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
----------------python.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
sopra frammento di codice dosnt uccidere il processo figlio
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
Tesi bambino processo di ricerca conservano, questi processo figlio anche avere ucciso.
Si prega di corporazione.
Grazie
get_children non esiste più , il metodo è chiamato [children] (http://pythonhosted.org/psutil/#psu til.Process.children) – user37203
Ho usato daemonize, quindi questo approccio era esattamente quello che stavo cercando. – crsuarezf