Как пользователь может прервать многопроцессорную программу? - PullRequest
0 голосов
/ 10 января 2020

Используя многопроцессорную обработку в Python, как разрешить пользователю корректно завершать выполнение программы вручную?

Существует множество тем, посвященных этой конкретной проблеме в стеке потока (например, 1 , 2 , 3 , 4 , 5 , 6 , 7 ) и многие блоги сообщения (например, 8 , 9 ). Большинство из них старые и относятся к Python 2.x. Ни одно из найденных решений на самом деле не работает (т.е. отображает заявленное там поведение) для меня на Python 3.6 и Windows. Часть проблемы, кажется, известная ошибка Python (см. 7 , проблема закрыта без рабочего решения afaik).

Я очень озадачен, так как для меня эта проблема делает Весь многопроцессорный модуль совершенно непригоден во всех случаях. Неспособность завершить долго работающую программу кажется очень большой проблемой.

В современном Python есть ли способ для конечного пользователя чисто завершить программу, использующую многопроцессорную обработку? ?

(редактировать: в данном случае под «чисто» я подразумеваю сам процесс, имеющий полный контроль над тем, какой дочерний процесс завершается, когда и возможность документировать это в журналах. Я также был бы заинтересован в Самый простой способ принудительно убить программу python со многими процессами. «Лучший» способ, который я знаю в настоящее время, - это уничтожить все процессы python

Мне все равно, если KeyboardInterrupt для конечного пользователя просто используется способ передачи сообщения завершения программе, которая запускает несколько процессов для параллельной работы над очередью задач. Я надеюсь, что эта topi c сможет решить эту постоянную проблему с помощью Python multiprocessing. Заранее большое спасибо!

Я мог бы предоставить> 10 примеров кода, ни один из которых не работает и, скорее всего, не поможет найти решение.

...