Wie implementiert man einen Tastaturhandler mithilfe einer BlockingQueue in Python?

Susan Sarandon
Freigeben: 2024-10-30 12:47:02
Original
272 Leute haben es durchsucht

How to Implement a Keyboard Handler Using a BlockingQueue in Python?

Eine der einfachsten Möglichkeiten, einen Tastaturhandler zu implementieren, der bei jedem Tastendruck eine Funktion aufruft (dies funktioniert sowohl unter Linux als auch unter Windows), ist die Verwendung einer BlockingQueue und Ein Thread, der die Taste beim Drücken in die Warteschlange stellt und die Warteschlange sie später in Ihrem Code abruft. Hier ist eine einfache Implementierung:

<code class="python">import queue
import sys
import threading

# blocking
q = queue.Queue()
last_input = 0.0


def input_thread(q):
    global last_input
    while True:
        ch = sys.stdin.read(1)
        last_input = time.time()
        print("got key: '{}'".format(ch))
        q.put(ch)

if __name__ == '__main__':
    t = threading.Thread(target=input_thread, args=(q,))
    t.daemon = True
    t.start()

    last_input_time = last_input

    while True:
        if not q.empty() and (time.time() - last_input) < 5:
            print("polling '{}' in the queue".format(q.get()))

        if time.time() - last_input_time > 5:
            print("nothing in the queue for a while")
            raise RuntimeError("no input")</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie implementiert man einen Tastaturhandler mithilfe einer BlockingQueue in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage