Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在等待getch的同时运行辅助任务?_Python_Multithreading_Getch - Fatal编程技术网

Python 如何在等待getch的同时运行辅助任务?

Python 如何在等待getch的同时运行辅助任务?,python,multithreading,getch,Python,Multithreading,Getch,所以我有一个小程序(使用Linux): 因此,它所做的就是等待用户按下一个键,然后他们向控制台显示“Hello World!”。但是,有没有一种方法可以让我持续地向控制台显示“Hello World!”,而让它结束的唯一方法是用户按下“q”键 这个问题类似于,但它在C++中。 我的第一个想法是查找线程,然而,我尝试了所有我能找到的线程,但没有一个有效。然后我遇到了全局解释器锁(GIL),据说它可以防止“多个本机线程同时执行Python字节码” 然后我尝试使用多处理,但它仍然不适合我。这就是我使

所以我有一个小程序(使用Linux):

因此,它所做的就是等待用户按下一个键,然后他们向控制台显示“Hello World!”。但是,有没有一种方法可以让我持续地向控制台显示“Hello World!”,而让它结束的唯一方法是用户按下“q”键

这个问题类似于,但它在C++中。


我的第一个想法是查找线程,然而,我尝试了所有我能找到的线程,但没有一个有效。然后我遇到了全局解释器锁(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()