当我尝试启动新线程时,我的整个程序都会停止,直到该线程的功能完成为止。我正在尝试使线程启动并继续运行,同时我的程序同时运行。
代码:
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()
我已经导入了所有必需的模块,所以这不是问题。在此使用的任何未定义的函数都已在其他地方定义,并且可以正常工作。我没有在这里包括我的整个程序,因为它太大了,无法粘贴到这里。
答案 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()