Почему дети не умеют умирать?

Я ожидал, что метод terminate() убьет два процесса:

 import multiprocessing import time def foo(): while True: time.sleep(1) def bar(): while True: time.sleep(1) if __name__ == '__main__': while True: p_foo = multiprocessing.Process(target=foo, name='foo') p_bar = multiprocessing.Process(target=bar, name='bar') p_foo.start() p_bar.start() time.sleep(1) p_foo.terminate() p_bar.terminate() print p_foo print p_bar 

Запуск кода дает:

 <Process(foo, started)> <Process(bar, started)> <Process(foo, started)> <Process(bar, started)> ... 

Я ожидал:

 <Process(foo, stopped)> <Process(bar, stopped)> <Process(foo, stopped)> <Process(bar, stopped)> ... 

One Solution collect form web for “Почему дети не умеют умирать?”

Поскольку функция завершения просто посылает сигнал SIGTERM для обработки, но сигналы асинхронны , поэтому вы можете спать в течение некоторого времени или ждать завершения процессов (получение сигнала).

Например, если после завершения добавить строку time.sleep(.1) , она, вероятно, будет прекращена.

  • Как выполнить скрипт Python с Java?
  • Почему Python «упреждающе» висит, пытаясь вычислить очень большое число?
  • Запуск командной строки из аргументов python и piping из памяти
  • Убейте процесс, используя его имя внутри linux (Python)
  • gdb довольно печатает с python рекурсивную структуру
  • Tornado Python как демон
  • Обнаружение линии в центре видео OpenCV
  • проблема pydev с gobject
  • Как выполнить автозаполнение командной строки python, но не только в начале строки
  • Python: каковы ближайшие эквиваленты Linux и OSX от winsound.Beep?
  • Запуск приложения в герою? Что такое procfile? команда «web:»?
  • Python - лучший язык программирования в мире.