Я пытаюсь заставить функции в разных файлах более крупной программы отправлять друг другу сообщения.Есть функция без оператора возврата.В тестовом примере, если я сделаю следующее в одном файле, я могу изменить глобальную переменную и обнаружить ее изменение во время выполнения:
one_file.py
import time
import threading
has_run = False
def processing_function():
global has_run
time.sleep(5)
has_run = True
start = time.clock()
thread = threading.Thread(target=processing_function)
thread.start()
while True:
print(has_run)
time.sleep(0.5)
if (10/3600) < time.clock() - start:
break
При запуске это на некоторое время напечатает False, затем начнет печатать True.
Я пытался заставить это работать с двумя файлами, подобными этому:
file1.py
import time
has_run = False
def processing_function():
global has_run
time.sleep(5)
has_run = True
file2.py
from file1 import processing_function, has_run
import time
import threading
start = time.clock()
thread = threading.Thread(target=processing_function)
thread.start()
while True:
print(has_run)
time.sleep(0.5)
if (10/3600) < time.clock() - start:
break
Если вы сейчас запустите file2.py, он будет печатать только False много раз.
Почему эта импортированная глобальная переменная не модифицируется запущенным процессом, и как это можно изменить, чтобы она работала?