Python:在不暂停代码的情况下获取用户输入



编辑:这是使用线程工作的,我面临的问题是由我使用的IDE引起的,它在获取用户输入时完全停止了程序。我花了大约3周的时间才意识到。。。

当在控制台中通过键入python filename.py来运行它时,这非常有效如果您尝试在IDLE中运行此程序,那么当调用input()时,整个代码将暂停。

我听说IDLE使用pythonw.exe执行代码,控制台使用python.exe,我认为两者之间有一些奇怪的区别,这使得它在一个中工作,但在另一个中不工作。

import threading
import time
last_input = None
def getUserInput():
while True:
if last_input:
print(f"nLast input: {last_input}")
time.sleep(1)
threading1 = threading.Thread(target=getUserInput)
threading1.daemon = True
threading1.start()
while True:
last_input = input("nnew input: ")

(这是我在这里提出的第一个问题,因此对问题中的任何错误或遗漏表示歉意(

是的,有一种方法可以在不暂停代码的情况下获得用户输入。我建议使用多线程而不是多处理,但两者都可以。

当您启动另一个进程时,该进程有自己的内存空间。特别是,在您的情况下,它有自己的user_input副本。因此,当子进程更改其user_input时,这对父进程的user_input没有影响。由于进程有单独的内存空间,如果要在进程之间进行数据通信,就必须使用特殊的进程间通信设施。您可以从文档中了解它们。多线程处理有相似但不相同的功能。

相关内容

最新更新