Процесс автоматического уничтожения и дочерний процесс многопроцессорного пула

Я использую многопроцессорный модуль для параллельной обработки. Фрагмент сильфонного кода ищет строку имени файла в X-местоположении и возвращает имя файла, в котором найдена строка. Но в некоторых случаях процесс поиска занимал много времени, поэтому я пытался завершить процесс поиска с помощью более 300 секунд. Для этого я использовал timeout == 300, как показано ниже, это убивает процесс поиска, но это не убивает ребенка процесс порождения по нижнему коду.

Я пытался найти несколько способов, но безуспешно: /

Как я могу убить родительский процесс из пула вместе с его дочерним процессом?

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 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

приведенный выше фрагмент кода не убивает дочерний процесс

--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe
--------------------------cmd.exe
---------------------------------SearchText.exe

Сохраняются дочерние процессы поиска, эти дочерние процессы также уничтожаются.

Пожалуйста, гильдия.

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос