Tôi đang sử dụng mô-đun đa xử lý để xử lý song song. Đoạn mã dưới đây tìm kiếm tên tệp chuỗi ở vị trí X và trả về tên tệp nơi chuỗi tìm thấy. Nhưng trong một số trường hợp phải mất nhiều thời gian để tìm kiếm quy trình vì vậy tôi đã cố gắng để giết quá trình tìm kiếm mất hơn 300 giây. Vì tôi đã sử dụng hết thời gian chờ == 300 như dưới đây, quá trình tìm kiếm sẽ giết chết quá trình con đẻ trứng bằng mã dưới đây.Quá trình tự động diệt và quá trình xử lý đa hồ bơi của trẻ
Tôi đã cố gắng tìm nhiều cách nhưng không thành công:/
Làm cách nào để tôi có thể giết quá trình cha mẹ khỏi Bể bơi cùng với quá trình con?
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()
Process Tree trong 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
trên đoạn mã dosnt giết quá trình con
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
Luận cương quá trình tìm kiếm con giữ lại, những tiến trình con cũng bị giết.
Vui lòng guild.
Cảm ơn
get_children không tồn tại nữa , phương thức này được gọi là [trẻ em] (http://pythonhosted.org/psutil/#psu til.Process.children) – user37203
Tôi đã sử dụng daemonize, vì vậy phương pháp này chính xác là những gì tôi đang tìm kiếm. – crsuarezf