Небольшое добавление к статье о
GIL.
Эта часть касается только поведения Питона на posix системах. Я
проводил эксперимент на Linux, но на FreeBSD и MacOS результат
должен быть тем же. На Windows свои тараканы, к последующему
изложению не имеющие никакого отношения.
Описание проблемы
Итак, имеем простой код:
import threading
threads = []
running = True
def f():
while running:
pass
for i in range(1):
th = threading.Thread(target=f)
threads.append(th)
th.start()
for th in threads:
th.join()
Что произойдет, если после запуска пользователь нажмет <Ctrl+C>?
Будет послан сигнал SIGINT
, который мы не умеем обрабатывать.
Отлично, добавим нужное:
import threading
import signal
threads = []
running = True
def f():
while running:
pa