Python 如何在等待getch的同时运行辅助任务?
所以我有一个小程序(使用Linux): 因此,它所做的就是等待用户按下一个键,然后他们向控制台显示“Hello World!”。但是,有没有一种方法可以让我持续地向控制台显示“Hello World!”,而让它结束的唯一方法是用户按下“q”键 这个问题类似于,但它在C++中。Python 如何在等待getch的同时运行辅助任务?,python,multithreading,getch,Python,Multithreading,Getch,所以我有一个小程序(使用Linux): 因此,它所做的就是等待用户按下一个键,然后他们向控制台显示“Hello World!”。但是,有没有一种方法可以让我持续地向控制台显示“Hello World!”,而让它结束的唯一方法是用户按下“q”键 这个问题类似于,但它在C++中。 我的第一个想法是查找线程,然而,我尝试了所有我能找到的线程,但没有一个有效。然后我遇到了全局解释器锁(GIL),据说它可以防止“多个本机线程同时执行Python字节码” 然后我尝试使用多处理,但它仍然不适合我。这就是我使
我的第一个想法是查找线程,然而,我尝试了所有我能找到的线程,但没有一个有效。然后我遇到了全局解释器锁(GIL),据说它可以防止“多个本机线程同时执行Python字节码” 然后我尝试使用多处理,但它仍然不适合我。这就是我使用它的程度:
import multiprocessing
import getch
def test1():
print("Hello World!")
def test2():
key = getch.getch()
if key == 'q':
exit()
while True:
p1 = multiprocessing.Process(target=test1, args=())
p2 = multiprocessing.Process(target=test2, args=())
p1.start()
p2.start()
p1.join()
p2.join()
我是不是遗漏了什么?或者在等待
getch()?或者我必须用支持C++的多线程语言?
感谢我无法安装fetch,可能是因为我现在在Windows上,但您可以实现您想要的功能(但是,是否有一种方法可以让我在控制台上连续显示“Hello World!”,并且只有当用户按“q”键时才能结束此功能?)
导入时间
从线程导入线程
定义另一个_线程():
尽管如此:
时间。睡眠(2)
打印(“工作…\n”)
def主螺纹()
尽管如此:
x=输入(“按一个键:\n”)
如果x==“q”:
打破
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#创建另一个线程对象
#守护进程意味着如果主线程停止,它将停止
th=线程(目标=另一个线程,守护进程=True)
th.start()#启动侧螺纹
主线程()#启动主逻辑
我希望它能连续打印出一些内容,并且只在用户按下“q”键时才会停止。如果原始问题中的信息不够,则检测按钮按下的情况会因您的操作系统而异。然而,在我看来,你试图使用并发是想得太多了。哦,我正在使用Linux。有没有不同的方法?一种不使用并发的方法?您可以使用包键盘
并在不使用键盘的情况下执行简单的循环。按下('q'):打印(“Hello world!”)
。
import multiprocessing
import getch
def test1():
print("Hello World!")
def test2():
key = getch.getch()
if key == 'q':
exit()
while True:
p1 = multiprocessing.Process(target=test1, args=())
p2 = multiprocessing.Process(target=test2, args=())
p1.start()
p2.start()
p1.join()
p2.join()