@FeeFort

Как завершить выполнение первой функции из второй и наоборот?

Приветствую.
В коде есть две функции: необходимо сделать так, чтобы если срабатывало условие в первой, завершилась вторая, и наоборот, если срабатывало условие во второй, то завершилась первая.
def foo(arg):
    if arg:
        # exit bar function

def bar(arg):
    if arg:
        # exit foo function


Делаю обработчик нажатий с клавиатуры и мыши, и если нажата кнопка на клавиатуре, то функция читающая нажатие кнопок с мыши завершилась, и наоборот. Что-то вроде бинда кнопок в играх.

UPD: Функции работают одновременно, через Thread, может, через него можно что-то сделать.
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
В питоне код может работать одновременно только в разных процессах. В рамах одного процесса треды не позволяют работать коду одновременно. Скорее всего у вас есть в функции место, где вызывается какой-то sleep или обращение к внешним библиотекам, на время выполнения которых управление переключается.
Это значит, что вы можете мониторите некое условие в цикле и ставить какой-то глобальный флаг, а значение этого флага отслеживать в цикле в другом треде.
Для таких целей есть такая структура данных, как семафор.
Однако, судя по вашему описанию задачи, у вас беда с архитектурой вашего решения. Приведите ваш код более етально и вам тут дудут советы как более правильно обработать ваши события, как более окрректно с архитектурной точки зрения построить ваш код.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы