Два потока обращаются к одному списку . Oдин видит его пустым , а другой показывает что в нём есть данные. Почему так происходит и как с этим бороться.
это не весь код но постираюсь обьяснить , execute добавляет в список функцию а run(работает в отдельном потоке ) выполняет и записывает ответ в словарь , проблема в том что функция execute добавляет в список но из потока где run список остаётся пустым . заранее скажу c Queue аналогичная ситуация
tail = []
response = {}
def run():
print(123)
while True:
try:
if len(tail) > 0:
for i in range(95):
func = tail.pop()
response.update({id(func) : func()})
time.sleep(1)
except IndexError:
pass
except Exception as e:
print(e)
def execute(self , func):
global tail #что с global что без , тоже самое
tail.append(func)
while True:
if response.get(id(func)) != None:
return response.get(id(func))