Python: я запускаю новый поток, и моя программа останавливается, пока поток не закончится - PullRequest
0 голосов
/ 03 июля 2018

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

Код:

def do_python(string):
    while True:
        exec(string, globals())
        time.sleep(0.1)

getKeyThread = threading.Thread(target=do_python("key = cpc.get_key()"), daemon=True).start()

time.sleep(0.2)

while True:

    if key == 9:
        print("Tab pressed.")
        exit()

Я импортировал все необходимые модули, так что это не проблема. Любые функции, используемые здесь, которые не определены, были определены в другом месте и работают отлично. Я не включил сюда всю свою программу, потому что она слишком велика для вставки.

1 Ответ

0 голосов
/ 03 июля 2018

Делая

do_python("key = cpc.get_key()")

вы на самом деле вызываете в своем основном потоке функцию do_python (которая имеет бесконечный цикл и никогда не прекратит работу). Поскольку функция никогда ничего не возвращает, она просто будет работать вечно. Если бы он что-то возвращал, вы, вероятно, получили бы ошибку, если что-либо не возвращается в вызываемом объекте.

Аргумент target требует вызываемого , поэтому вы должны передать ему свою функцию

getKeyThread = threading.Thread(target=do_python, args=some_args, daemon=True).start()
...