@Tahircik

Потоки в python?

Два потока обращаются к одному списку . 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))
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы