Я пытаюсь освоиться с Python, пытаюсь заменить на него немного Си. У меня возникла проблема с обменом данными между модулями, или, скорее, с моим пониманием всего этого. У меня есть модуль сигнала, который упрощен:
import sys, signal
sigterm_caught = False
def SignalHandler(signum, stackframe):
if signum == signal.SIGTERM:
sigterm_caught = True
sys.stdout.write("SIGTERM caught\n")
def SignalSetup():
signal.signal(signal.SIGTERM, SignalHandler)
и мой основной код имеет такой цикл:
signals.SignalSetup()
while signals.sigterm_caught == False:
sys.stdout.write("sigterm_caught=%s\n" % str(signals.sigterm_caught))
time.sleep(5)
Я запускаю его, затем убиваю процесс, внутри signal.py он получает сигнал, устанавливает для sigterm_caught значение True, но цикл в основном процессе не видит изменения значения sigterm_caught.
Так (а) мой подход совершенно неверен для пути Python?
(б) я делаю что-то не так, пытаясь ссылаться на переменные в модуле?
и (c) я должен обрабатывать сигналы по-другому, например, вызывать исключение?
Дополнение:
Лучше обрабатывать сигналы, вызывая исключение, или мой старый подход к Си все еще действителен?