Существуют ли прерывания в Python?

Можете ли вы писать прерывания в Python, которые могут запускать и прерывать выполнение программы в результате какого-либо внешнего события?

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


person FourierFlux    schedule 24.04.2021    source источник
comment
Да, ознакомьтесь с signal документацией по модулю в stdlib.   -  person Michael Ruth    schedule 24.04.2021
comment
Это старый ответ для Py 2.7, но он все еще может быть актуальным stackoverflow .com / questions / 23170318 /   -  person Klemen Tusar    schedule 24.04.2021
comment
Еще немного об управлении прерываниями и событиями с использованием примеров различных модулей: stackoverflow.com / questions / 1092531 / event-system-in-python stackoverflow.com/questions/25029537/   -  person IODEV    schedule 24.04.2021
comment
Интересно, есть ли способ перезапустить поток программы с того места, где вы остановились, как в микроконтроллерах?   -  person FourierFlux    schedule 25.04.2021


Ответы (1)


Python основан на языке C, поэтому многие его функции также доступны в Python (некоторые библиотеки фактически написаны на C и скомпилированы для Python). Вы можете посмотреть signal для сигналов и прерываний.

person Tamir    schedule 24.04.2021
comment
Имейте в виду, что signal () зависит от реализации, поэтому может вести себя совершенно по-разному в зависимости от платформы. Кроме того, обработчики сигналов Python всегда выполняются в основном потоке Python основного интерпретатора, даже если сигнал был получен в другом потоке. Это означает, что сигналы нельзя использовать как средство межпоточного взаимодействия. Вместо этого вы можете использовать примитивы синхронизации из модуля потоковой передачи. - person IODEV; 24.04.2021