📊
Python Docs
  • Стандартная библиотека Python
  • Общее описание
    • Введение
    • Оглавление
    • Содержание по порядку
    • Содержание по алфавиту
  • Встроенные объекты
    • Встроенные функции
      • abs ()
      • open ()
    • Встроенные типы
    • Встроенные исключения
  • Модули стандартной библиотеки
    • Обработка текста
      • string
      • re
        • Синтаксис регулярных выражений
        • Составляющие модуля
          • re.match ()
        • Объекты шаблона Pattern
        • Объекты совпадения Match
        • Примеры регулярных выражений
      • difflib
      • textwrap
      • unicodedata
      • stringprep
      • readline
      • rlcompleter
    • Двоичные данные
      • struct
        • struct.error
        • struct.pack ()
        • struct.pack_into ()
        • struct.unpack ()
        • struct.unpack_from ()
        • struct.iter_unpack ()
        • struct.calcsize ()
        • struct.Struct
        • struct.Struct.pack ()
        • struct.Struct.pack_into ()
        • struct.Struct.unpack ()
        • struct.Struct.unpack_from ()
        • struct.Struct.iter_unpack ()
        • struct.Struct.format
        • struct.Struct.size
      • codecs
    • Специальные типы данных
      • datetime
      • calendar
        • calendar.Calendar
          • Calendar.timegm ()
        • calendar.TextCalendar
        • calendar.HTMLCalendar
        • calendar.LocaleTextCalendar
        • calendar.LocaleHTMLCalendar
        • Функции calendar
      • collections
      • collections.abc
      • heapq
      • bisect
      • array
      • weakref
      • types
      • copy
      • pprint
      • reprlib
      • enum
        • Содержание модуля
          • enum.IntEnum
        • Создание Enum
    • Математические модули
      • numbers
      • math
      • cmath
      • decimal
      • fractions
      • random
      • statistics
    • Функциональные программные модули
      • itertools
      • functools
        • functools.cache()
        • functools.cached_property()
        • functools.cmp_to_key()
        • functools.lru_cache()
        • functools.total_ordering
        • functools.partial()
        • functools.partialmethod()
        • functools.reduce()
        • functools.singledispatch
        • functools.singledispatchmethod()
        • functools.update_wrapper()
        • functools.wraps()
        • Объекты partial
      • operator
    • Доступ к файлам и папкам
      • pathlib
      • os.path
        • os.path.abspath ()
        • os.path.basename ()
        • os.path.dirname ()
        • os.path.exists ()
        • os.path.expanduser ()
        • os.path.expandvars ()
        • os.path.getsize ()
        • os.path.isfile ()
        • os.path.isdir ()
        • os.path.islink ()
        • os.path.join ()
        • os.path.normcase ()
        • os.path.normpath ()
        • os.path.realpath ()
        • os.path.split ()
        • os.path.splitext ()
      • fileinput
      • stat
      • filecmp
      • tempfile
      • glob
        • glob.glob ()
      • fnmatch
        • fnmatch.fnmatch ()
        • fnmatch.fnmatchcase ()
        • fnmatch.filter ()
        • fnmatch.translate ()
      • linecache
      • shutil
        • shutil.rmtree ()
        • shutil.chown ()
    • Хранение данных
      • pickle
        • HIGHEST_PROTOCOL
        • DEFAULT_PROTOCOL
        • dump ()
        • dumps ()
        • load ()
        • loads ()
        • PickleError
        • PicklingError
        • UnpicklingError
      • copyreg
      • shelve
      • marshal
      • dbm
      • sqlite3
    • Сжатие и архивирование данных
      • zlib
      • gzip
      • bz2
      • lzma
      • zipfile
      • tarfile
    • Форматы файлов
      • csv
      • configparser
      • netrc
      • xdrlib
      • plistlib
    • Криптографические службы
      • hashlib
      • hmac
      • secrets
    • Общие службы операционной системы
      • os
        • os.error
        • os.name ()
        • Параметры процесса
          • os.environ
          • os.fsencode ()
          • os.fsdecode ()
          • os.PathLike
          • os.getenv ()
          • os.getenvb ()
          • os.getpid ()
          • os.getppid ()
          • os.putenv ()
          • os.uname ()
          • os.unsetenv ()
        • Создание файлового объекта
          • os.fdopen ()
        • Операции с файловыми дескрипторами
          • os.close ()
          • os.dup2 ()
          • os.fstat ()
          • os.fsync ()
          • os.isatty ()
          • os.lseek ()
          • os.SEEK_SET
          • os.SEEK_CUR
          • os.SEEK_END
          • os.open ()
          • os.openpty ()
          • os.pipe ()
          • os.read ()
          • os.write ()
        • Файлы и директории
          • os.chdir ()
          • os.chmod ()
          • os.chown ()
          • os.getcwd ()
          • os.listdir ()
          • os.lstat ()
          • os.mkfifo ()
          • os.remove ()
          • os.rename ()
          • os.replace ()
          • os.rmdir ()
          • os.scandir ()
          • os.stat ()
          • os.stat_result
          • os.supports_dir_fd
          • os.supports_fd
          • os.supports_follow_symlinks
          • os.unlink ()
          • os.walk ()
        • Управление процессами
          • os.execl ()
          • os.execle ()
          • os.execlp ()
          • os.execlpe ()
          • os.execv ()
          • os.execve ()
          • os.execvp ()
          • os.execvpe ()
          • os._exit ()
          • os.fork ()
          • os.kill ()
          • os.popen ()
          • os.spawnl ()
          • os.P_NOWAIT
          • os.startfile ()
          • os.system ()
          • os.wait ()
          • os.waitpid ()
          • os.waitstatus_to_exitcode ()
          • os.WNOHANG
        • Разные службы ОС
          • os.curdir
          • os.pardir
          • os.sep
          • os.altsep
          • os.pathsep
          • os.linesep
      • io
        • Высокоуровневый интерфейс модуля
          • io.DEFAULT_BUFFER_SIZE
        • io.IOBase
          • io.IOBase.close ()
          • io.IOBase.fileno ()
          • io.IOBase.flush ()
          • io.IOBase.isatty ()
          • io.IOBase.readline ()
          • io.IOBase.readlines ()
          • io.IOBase.seek ()
          • io.IOBase.writelines ()
        • io.RawIOBase
          • io.RawIOBase.read ()
          • io.RawIOBase.readall ()
          • io.RawIOBase.readinto ()
          • io.RawIOBase.write ()
        • io.BufferedIOBase
          • io.BufferedIOBase.read ()
          • io.BufferedIOBase.write ()
        • io.FileIO
        • io.BytesIO
          • io.BytesIO.getvalue ()
        • io.BufferedReader
          • io.BufferedReader.read ()
        • io.BufferedWriter
          • io.BufferedWriter.flush ()
          • io.BufferedWriter.write ()
        • io.BufferedRandom
        • io.BufferedRWPair
        • io.TextIOBase
          • io.TextIOBase.read ()
          • io.TextIOBase.readline ()
          • io.TextIOBase.seek ()
          • io.TextIOBase.tell ()
          • io.TextIOBase.write ()
        • io.TextIOWrapper
        • io.StringIO
          • io.StringIO.getvalue ()
      • time
        • Функции time
          • time.asctime ()
          • time.ctime ()
          • time.gmtime ()
          • time.localtime ()
          • time.mktime ()
          • time.sleep ()
          • time.strftime ()
          • time.strptime ()
          • time.struct_time
          • time.time ()
        • Константы идентификатора часов
        • Константы часового пояса
      • argparse
      • getopt
      • logging
      • logging.config
      • logging.handlers
      • getpass
      • curses
      • curses.textpad
      • curses.ascii
      • curses.panel
      • platform
      • errno
      • ctypes
    • Параллельное выполнение
      • threading
        • Объекты Thread
        • Объекты Lock
        • Объекты RLock
        • Объекты Condition
        • Объекты Semaphore
        • Объекты Event
        • Объекты Timer
        • Объекты Barrier
      • multiprocessing
      • multiprocessing.shared_memory
      • concurrent
      • concurrent.futures
      • subprocess
        • subprocess.PIPE
        • subprocess.Popen
        • Popen.wait ()
        • Popen.communicate ()
        • Popen.args
        • Popen.stdin
        • Popen.stdout
        • Popen.stderr
        • Popen.pid
        • Popen.returncode
        • subprocess.call ()
      • sched
      • queue
        • queue.Queue
        • queue.LifoQueue
        • queue.PriorityQueue
        • queue.SimpleQueue
        • queue.Empty
        • queue.Full
        • Queue.qsize ()
        • Queue.empty ()
        • Queue.full ()
        • Queue.put ()
        • Queue.put_nowait ()
        • Queue.get ()
        • Queue.get_nowait ()
        • Queue.task_done ()
        • Queue.join ()
        • SimpleQueue.qsize ()
        • SimpleQueue.empty ()
        • SimpleQueue.put ()
        • SimpleQueue.put_nowait ()
        • SimpleQueue.get ()
        • SimpleQueue.get_nowait ()
      • _thread
        • _thread.error
        • _thread.LockType
        • _thread.start_new_thread ()
        • _thread.interrupt_main ()
        • _thread.exit ()
        • _thread.allocate_lock ()
        • _thread.get_ident ()
        • _thread.get_native_id ()
        • _thread.stack_size ()
        • _thread.TIMEOUT_MAX
        • lock.acquire ()
        • lock.release ()
        • lock.locked ()
      • _dummy_thread
      • dummy_threading
      • contextvars
    • Сетевое и межпроцессное взаимодействие
      • asyncio
        • Краткий список API
      • socket
        • Семейство сокетов
          • AF_UNIX
          • AF_INET
          • AF_INET6
          • AF_NETLINK
          • AF_TIPC
          • AF_CAN
          • PF_SYSTEM
          • AF_BLUETOOTH
          • AF_ALG
          • AF_VSOCK
          • AF_PACKET
          • AF_QIPCRTR
          • IPPROTO_UDPLITE
        • Исключения сокетов
          • socket.error
          • socket.herror
          • socket.gaierror
          • socket.timeout
        • Константы сокетов
          • socket.AF_UNIX
          • socket.AF_INET
          • socket.AF_INET6
          • socket.SOCK_STREAM
          • socket.SOCK_DGRAM
          • socket.SOCK_RAW
          • socket.SOCK_NONBLOCK
          • socket.SOCK_CLOEXEC
          • socket.AF_CAN
          • socket.CAN_BCM
          • socket.CAN_ISOTP
          • socket.CAN_J1939
          • socket.AF_PACKET
          • socket.AF_RDS
        • Функции сокетов
          • socket.socket ()
          • socket.create_connection ()
          • socket.fromfd ()
          • socket.close ()
          • socket.getaddrinfo ()
          • socket.getfqdn ()
          • socket.gethostbyname ()
          • socket.gethostbyname_ex ()
          • socket.gethostname ()
          • socket.gethostbyaddr ()
          • socket.getnameinfo ()
          • socket.getprotobyname ()
          • socket.getservbyname ()
          • socket.getservbyport ()
          • socket.ntohl ()
          • socket.htonl ()
          • socket.getdefaulttimeout ()
          • socket.setdefaulttimeout ()
        • Объекты сокетов
          • socket.accept ()
          • socket.bind ()
          • socket.close ()
          • socket.connect ()
          • socket.fileno ()
          • socket.getpeername ()
          • socket.listen ()
          • socket.makefile ()
          • socket.recv ()
          • socket.send ()
          • socket.sendall ()
          • socket.setblocking ()
          • socket.settimeout ()
          • socket.shutdown ()
          • socket.type
      • ssl
      • select
        • Атрибуты модуля
          • select.select ()
        • Объекты опроса devpoll
        • Объекты epoll
        • Объекты опроса poll
        • Объекты kqueue
        • Объекты kevent
      • selectors
      • asyncore
      • asynchat
      • signal
        • Константы модуля signal
          • signal.SIG_DFL
          • signal.SIG_IGN
          • signal.SIGABRT
          • signal.SIGALRM
          • signal.SIGBREAK
          • signal.SIGCHLD
          • signal.SIGFPE
          • signal.SIGILL
          • signal.SIGINT
          • signal.SIGPIPE
          • signal.SIGSEGV
          • signal.SIGTERM
          • signal.SIGUSR1
          • signal.SIGUSR2
          • signal.CTRL_C_EVENT
          • signal.CTRL_BREAK_EVENT
          • signal.SIG_BLOCK
          • signal.SIG_UNBLOCK
          • signal.SIG_SETMASK
        • Исключения модуля signal
        • Функции модуля signal
          • signal.alarm ()
          • signal.getsignal ()
          • signal.strsignal ()
          • signal.valid_signals ()
          • signal.pause ()
          • signal.raise_signal ()
          • signal.pthread_kill ()
          • signal.pthread_sigmask ()
          • signal.signal ()
          • signal.sigpending ()
          • signal.sigwait ()
          • signal.sigwaitinfo ()
          • signal.sigtimedwait ()
      • mmap
    • Обработка интернет данных
      • email
      • json
      • mailcap
      • mailbox
      • mimetypes
      • base64
      • binhex
      • binascii
      • quopri
      • uu
    • Обработка упорядоченной разметки
      • html
      • html.parser
      • html.entities
      • Модули обработки XML
      • xml.etree.ElementTree
      • xml.dom
      • xml.dom.minidom
      • xml.dom.pulldom
      • xml.sax
      • xml.sax.handler
      • xml.sax.saxutils
      • xml.sax.xmlreader
      • xml.parsers.expat
    • Интернет протоколы
      • webbrowser
      • cgi
      • cgitb
      • wsgiref
      • urllib
      • urllib.request
      • urllib.response
      • urllib.parse
      • urllib.error
      • urllib.robotparser
      • http
      • http.client
      • ftplib
      • poplib
      • imaplib
      • nntplib
      • smtplib
      • smtpd
      • telnetlib
      • uuid
      • socketserver
      • http.server
      • http.cookies
      • http.cookiejar
      • xmlrpc
      • xmlrpc.client
      • xmlrpc.server
      • ipaddress
    • Мультимедиа службы
      • audioop
      • aifc
      • sunau
      • wave
      • chunk
      • colorsys
      • imghdr
      • sndhdr
      • ossaudiodev
    • Интернационализация
      • gettext
      • locale
    • Программные фреймворки
      • turtle
      • cmd
      • shlex
    • Графические интерфейсы пользователя с Tk
      • tkinter
      • tkinter.ttk
      • tkinter.tix
      • tkinter.scrolledtext
      • IDLE
      • Другие пакеты графических интерфейсов
    • Инструменты разработки
      • typing
      • pydoc
      • doctest
      • unittest
      • unittest.mock
      • 2to3
      • test
      • test.support
      • test.support.script_helper
    • Отладка и профилирование
      • Таблица событий аудита
      • bdb
      • faulthandler
      • pdb
      • Профилировщики Python
      • timeit
      • trace
      • tracemalloc
    • Упаковка и распространение программ
      • distutils
      • ensurepip
      • venv
      • zipapp
    • Службы среды выполнения Python
      • sys
        • sys.argv
        • sys.executable
        • sys.exit ()
        • sys.getdefaultencoding ()
        • sys.getfilesystemencoding ()
        • sys.path
        • sys.platform
        • sys.setcheckinterval ()
        • sys.setswitchinterval ()
        • sys.stdin, sys.stdout, sys.stderr
        • sys.unraisablehook ()
      • sysconfig
      • builtins
      • __main__
      • warnings
      • dataclasses
      • contextlib
      • abc
      • atexit
      • traceback
      • __future__
      • gc
      • inspect
      • site
    • Пользовательские интерпретаторы Python
      • code
      • codeop
    • Импортирование модулей
      • zipimport
      • pkgutil
      • modulefinder
      • runpy
      • importlib
      • importlib.metadata
    • Службы языка Python
      • parser
      • ast
      • symtable
      • symbol
      • token
      • keyword
      • tokenize
      • tabnanny
      • pyclbr
      • py_compile
      • compileall
      • dis
      • pickletools
    • Разные службы
      • formatter
    • Специальные службы MS Windows
      • msilib
      • msvcrt
        • msvcrt.kbhit ()
        • msvcrt.getch ()
        • msvcrt.getche ()
        • msvcrt.putch ()
      • winreg
      • winsound
    • Специальные службы Unix
      • posix
      • pwd
      • spwd
      • grp
      • crypt
      • termios
      • tty
      • pty
      • fcntl
      • pipes
      • resource
      • nis
      • syslog
    • Замененные модули
      • optparse
      • imp
    • Недокументированные модули
      • Специфичные модули платформы
Powered by GitBook
On this page
  • Устанавливает обработчики для асинхронных событий
  • Общие правила
  • Выполнение обработчиков сигналов Python
  • Сигналы и потоки
  • Содержание модуля
  • Пример
  • Примечание для SIGPIPE

Was this helpful?

  1. Модули стандартной библиотеки
  2. Сетевое и межпроцессное взаимодействие

signal

PreviousasynchatNextКонстанты модуля signal

Last updated 4 years ago

Was this helpful?

Устанавливает обработчики для асинхронных событий

Этот модуль предоставляет механизмы для использования обработчиков сигналов в Python.

Общие правила

Функция позволяет определять пользовательские обработчики, которые будут выполняться при получении сигнала. Установлено небольшое количество обработчиков по умолчанию: игнорируется (поэтому об ошибках записи в каналах и сокетах можно сообщать как об обычных исключениях Python), а преобразуется в исключение KeyboardInterrupt, если родительский процесс не изменил его.

После установки обработчик для конкретного сигнала остается установленным до его явного сброса (Python эмулирует интерфейс стиля BSD независимо от базовой реализации), за исключением обработчика для , который следует базовой реализации.

Выполнение обработчиков сигналов Python

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

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

  • Долговременные вычисления, реализованные исключительно на C (например, сопоставление регулярных выражений для большого объема текста), могут выполняться непрерывно в течение произвольного количества времени, независимо от полученных сигналов. Обработчики сигналов Python будут вызваны по окончании вычислений.

Сигналы и потоки

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

Кроме того, только основной поток может устанавливать новый обработчик сигнала.

Содержание модуля

Изменено в версии 3.5: перечисленные ниже константы, связанные с сигналом (SIG*), обработчиком (, ) и sigmask (, , ), были преобразованы в перечисления . Функции , , и возвращают удобочитаемые перечисления .

В модуле signal определены следующие переменные:

  • signal.SIGABRT

  • signal.SIGBREAK

  • signal.SIGBUS

  • не заполнено...

  • не заполнено...

Модуль signal определяет одно исключение:

  • signal.ItimerError exception

Модуль signal определяет следующие функции:

  • signal.getsignal ()

  • signal.strsignal ()

  • signal. valid_signals ()

  • не заполнено...

  • не заполнено...

Пример

import signal, os

def handler(signum, frame):
    print('Signal handler called with signal', signum)
    raise OSError("Couldn't open device!")

# Установите обработчик сигнала и 5-секундный будильник
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)

# Этот open () может зависать бесконечно
fd = os.open('/dev/ttyS0', os.O_RDWR)

signal.alarm(0)          # Отключить будильник

Примечание для SIGPIPE

import os
import sys

def main():
    try:
        # имитировать большой вывод (ваш код заменяет этот цикл)
        for x in range(10000):
            print("y")
        # очистить вывод здесь, чтобы принудительно запустить SIGPIPE
        # находясь внутри этого блока try.
        sys.stdout.flush()
    except BrokenPipeError:
        # Python сбрасывает стандартные потоки при выходе;
        # перенаправить оставшийся вывод на devnull,
        # чтобы избежать еще одной BrokenPipeError при завершении работы
        devnull = os.open(os.devnull, os.O_WRONLY)
        os.dup2(devnull, sys.stdout.fileno())
        sys.exit(1)  # Python выходит с кодом ошибки 1 на EPIPE

if __name__ == '__main__':
    main()

- выполняет функцию по умолчанию для сигнала

- обработчик просто игнорирует данный сигнал

- сигнал таймера от alarm(2) в Unix

- дочерний процесс остановлен или прекращен

- определяемый пользователем сигнал 1

- определяемый пользователем сигнал 2

- отправляет сигнал SIGALRM через указанное количество секунд

- приостанавливает процесс, пока не будет перехвачен следующий сигнал

- задает обработчик для сигнала

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

Передача вывода вашей программы по конвейеру таким инструментам, как , вызовет отправку сигнала вашему процессу, когда приемник его стандартного вывода закроется раньше. Это приводит к возникновению исключения, например BrokenPipeError: [Errno 32] Broken pipe. Чтобы обработать этот случай, оберните вашу точку входа, чтобы перехватить это исключение, следующим образом:

Не устанавливайте для значение , чтобы избежать ошибки BrokenPipeError. Это может привести к неожиданному завершению вашей программы также всякий раз, когда какое-либо соединение сокета прерывается, пока ваша программа все еще пишет в него.

signal.signal ()
SIGPIPE
SIGINT
SIGCHLD
SIGFPE
SIGSEGV
threading
SIG_DFL
SIG_IGN
SIG_BLOCK
SIG_UNBLOCK
SIG_SETMASK
enums
getsignal ()
pthread_sigmask ()
sigpending ()
sigwait ()
enums
signal.SIG_DFL
signal.SIG_IGN
signal.SIGALRM
signal.SIGCHLD
signal.SIGUSR1
signal.SIGUSR2
signal.alarm ()
signal.pause ()
signal.signal ()
alarm ()
os.open ()
head(1)
SIGPIPE
SIGPIPE
SIG_DFL