Python:我开始一个新线程,并且我的程序暂停直到线程结束

时间:2018-07-03 03:29:27

标签: python python-2.7 python-multithreading

当我尝试启动新线程时,我的整个程序都会停止,直到该线程的功能完成为止。我正在尝试使线程启动并继续运行,同时我的程序同时运行。

代码:

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 :(得分:2)

这样做

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

实际上,您在主线程中正在调用{em> ,该函数do_python(具有无限循环并且永远不会停止运行)。由于该函数从不返回任何内容,因此它将永远保持运行状态。如果它确实返回了某些内容,除非在可调用对象中返回了任何内容,否则您可能会收到错误消息。

自变量target requires a callable,因此您必须将函数传递给它

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