Завершение программ средствами модуля os

zavershenie programm sredstvami modulya os Системные инструменты параллельного выполнения

Можно выйти из Python и другими способами. Например, в дочернем процессе в Unix обычно вызывается функция os._exit, а не sys.exit. Потоки можно завершать с помощью функции _thread.exit, а приложения с графическим интерфейсом на основе tkinter часто завершаются с помощью метода Tk().quit (). С модулем tkinter мы познакомимся далее в этой книге, а сейчас поближе рассмотрим инструменты завершения программ в модуле os.

При вызове функции os._exit вызывающий процесс завершается сразу, не возбуждая исключения, которое можно перехватить и игнорировать. Фактически при таком завершении процесс прекращает работу, не выталкивая буферы потоков вывода и не вызывая обработчики, выполняющие заключительные операции (которые можно определить с помощью модуля atexit из стандартной библиотеки), поэтому в общем случае данная функция должна использоваться только дочерними процессами, когда не требуется выполнения действий по завершению всей программы. Пример 5.16 иллюстрирует основы использования этой функции.

Пример 5.16. PP4E\System\Exits\testexit_os.py

def outahere(): import os print(‘Bye os world’) os._exit(99) print(‘Never reached’)

if __name__ == ‘__main__’: outahere()

В отличие от sys.exit, функция os._exit неуязвима для инструкций обработки исключений try/except и try/finally:

C:\\PP4E\System\Exits> python testexit_os.py

Bye os world

C:\\PP4E\System\Exits> python

>>> from testexit_os import outahere

>>> try:

outahere()

except:

print(‘Ignored’)

Bye os world # завершение процесса интерактивного сеанса

C:\\PP4E\System\Exits> python

>>> from testexit_os import outahere

>>> try:

outahere()

finally:

print(‘Cleanup’)

Bye os world # ditto

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий