Эквивалент thread.interrupt_main () в Python 3 - PullRequest
0 голосов
/ 30 октября 2018

В Python 2 есть функция thread.interrupt_main(), которая вызывает исключение KeyboardInterrupt в основном потоке при вызове из подпотока.

Это также доступно через _thread.interrupt_main() в Python 3, но это низкоуровневый «модуль поддержки», в основном для использования в других стандартных модулях.

Каков современный способ сделать это в Python 3, предположительно через модуль threading, если он есть?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Хорошее создание исключения вручную является своего рода низкоуровневым, поэтому, если вы считаете, что вам нужно это сделать, просто используйте _thread.interrupt_main(), поскольку это эквивалентно тому, что вы просили (threading сам модуль не обеспечивает этого).

Вполне возможно, что есть более элегантный способ достичь вашей конечной цели. Возможно, уже достаточно установить и проверить флаг, либо использовать threading.Event, как уже предложено @RFmyD, либо использовать передачу сообщений через queue.Queue. Это зависит от вашей конкретной настройки.

0 голосов
/ 30 октября 2018

Возможно, вы захотите заглянуть в модуль threading.Event.

...