![](/img/trans.png)
[英]Run multiple python scripts, that use user inputs and while loops, simultaneously
[英]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
包中的一個非常特定的組合keyboard
。 我認為循環是保持程序運行的方法嗎?
或者說,如果我想在 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.