如何在Python中同时运行多个循环?
How to run multiple loops simultaneously in Python?
我正在尝试做一些看似非常基本的事情,但我总是让自己陷入不允许我执行其他操作的循环中。例如:
def functionOne():
if x key is pressed:
do something
def functionTwo():
if y key is pressed:
do something else
def functionThree():
if z key is pressed:
do something else
def main():
functionOne()
functionTwo()
functionThree()
main()
我试图在每个函数中执行 while 循环,但这会将每个函数锁定在其自己的循环周期中。我基本上希望我的程序 运行 直到我按下 Python keyboard
包中的一个非常具体的组合键。我假设循环是保持程序 运行ning?
的方式
或者说,如果我想在 GUI 上实现它,并且只在点击 GUI 上的 quit
按钮时退出程序,同时等待其他按钮被点击以执行其他操作。
我知道我可以做一个巨大的主循环,条件相互嵌套,但我希望有一种涉及函数的更简洁的方法。
试试这个方法:-
def functionOne(key):
if key != 'x':
return
if x key is pressed:
do something
def functionTwo(key):
if key != 'y':
return
if y key is pressed:
do something else
def functionThree(key):
if key != 'z':
return
if z key is pressed:
do something else
def main():
while key != 'q':
key = input("Enter the key :")
functionOne(key)
functionTwo(key)
functionThree(key)
main()
除此之外,如果函数计算量大且键输入间隔小于函数的计算时间,则可以使用线程。
你可以利用 pynput
首先安装它
pip install pynput
然后你可以像下面的例子(从 pynput 文档中获得)那样实现你正在寻找的东西:
from pynput import keyboard
def on_press(key):
try:
print('alphanumeric key {0} pressed'.format(key.char))
except AttributeError:
print('special key {0} pressed'.format(
key))
def on_release(key):
print('{0} released'.format(key))
if key == keyboard.Key.esc:
# Stop listener
return False
# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
# ...or, in a non-blocking fashion:
listener = keyboard.Listener(
on_press=on_press,
on_release=on_release)
listener.start()
我正在尝试做一些看似非常基本的事情,但我总是让自己陷入不允许我执行其他操作的循环中。例如:
def functionOne():
if x key is pressed:
do something
def functionTwo():
if y key is pressed:
do something else
def functionThree():
if z key is pressed:
do something else
def main():
functionOne()
functionTwo()
functionThree()
main()
我试图在每个函数中执行 while 循环,但这会将每个函数锁定在其自己的循环周期中。我基本上希望我的程序 运行 直到我按下 Python keyboard
包中的一个非常具体的组合键。我假设循环是保持程序 运行ning?
或者说,如果我想在 GUI 上实现它,并且只在点击 GUI 上的 quit
按钮时退出程序,同时等待其他按钮被点击以执行其他操作。
我知道我可以做一个巨大的主循环,条件相互嵌套,但我希望有一种涉及函数的更简洁的方法。
试试这个方法:-
def functionOne(key):
if key != 'x':
return
if x key is pressed:
do something
def functionTwo(key):
if key != 'y':
return
if y key is pressed:
do something else
def functionThree(key):
if key != 'z':
return
if z key is pressed:
do something else
def main():
while key != 'q':
key = input("Enter the key :")
functionOne(key)
functionTwo(key)
functionThree(key)
main()
除此之外,如果函数计算量大且键输入间隔小于函数的计算时间,则可以使用线程。
你可以利用 pynput
首先安装它
pip install pynput
然后你可以像下面的例子(从 pynput 文档中获得)那样实现你正在寻找的东西:
from pynput import keyboard
def on_press(key):
try:
print('alphanumeric key {0} pressed'.format(key.char))
except AttributeError:
print('special key {0} pressed'.format(
key))
def on_release(key):
print('{0} released'.format(key))
if key == keyboard.Key.esc:
# Stop listener
return False
# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
# ...or, in a non-blocking fashion:
listener = keyboard.Listener(
on_press=on_press,
on_release=on_release)
listener.start()