Paralel işlem için çok işlemcili bir modül kullanıyorum. Körük kod snippet'i, dize dosya adını X konumunda arayın ve dizenin bulunduğu dosya adını döndürün. Ancak bazı durumlarda arama işlemi için çok uzun zaman alır, bu yüzden arama işlemini 300 saniyeden fazla sürdürebilirim. Zaman aşımı için kullanılan zaman aşımı = 300 olarak kullanılır, bu arama sürecini öldürür fakat Çocuk işlemi feryat koduyla ortaya çıkar./Otomatik işlem süreci ve çok işlemcili çocuk işlemleri Havuz
Nasıl alt işlemleri ile birlikte havuzundan ana işlem öldürebilir:
Birden yol ama hiçbir başarı bulmaya çalıştılar? Process Explorerimport 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()
Süreç Ağacı: kod parçacığı üzerinde
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
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
Tezler çocuk arama süreci korumak çocuk sürecini öldürmek dosnt, bu çocuk süreci de öldürülür.
Lütfen lonca.
Teşekkür
get_children artık yok , yöntem [çocuklar] denir (http://pythonhosted.org/psutil/#psu til.Process.children) – user37203
Ben, daemonize kullandım, bu yüzden bu yaklaşım tam olarak aradığım şeydi. – crsuarezf