Nicht-blockierende Konsoleneingabe
Nicht-blockierende Konsoleneingabe ist in Anwendungen von entscheidender Bedeutung, bei denen eine gleichzeitige Interaktion mit dem Benutzer und eine kontinuierliche Verarbeitung erforderlich sind. In diesem Fall besteht das Ziel darin, diese Funktion für einen Python-IRC-Client zu implementieren.
Nicht blockierende Eingabe unter Windows
Für Windows-Systeme bietet das msvcrt-Modul eine Lösung:
import msvcrt num = 0 done = False while not done: print(num) num += 1 if msvcrt.kbhit(): print("you pressed", msvcrt.getch(), "so now I will quit") done = True
Nicht-blockierende Eingabe an Linux
Unter Linux können die Module select, tty und termios verwendet werden:
import sys import select import tty import termios def isData(): return select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []) old_settings = termios.tcgetattr(sys.stdin) try: tty.setcbreak(sys.stdin.fileno()) i = 0 while 1: print(i) i += 1 if isData(): c = sys.stdin.read(1) if c == '\x1b': break finally: termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
Plattformübergreifende, nicht blockierende Eingabe
Für eine plattformübergreifende Lösung oder zur Integration von GUI-Funktionalität kann Pygame geeignet sein genutzt:
import pygame from pygame.locals import * def display(str): text = font.render(str, True, (255, 255, 255), (159, 182, 205)) textRect = text.get_rect() textRect.centerx = screen.get_rect().centerx textRect.centery = screen.get_rect().centery screen.blit(text, textRect) pygame.display.update() pygame.init() screen = pygame.display.set_mode( (640,480) ) pygame.display.set_caption('Python numbers') screen.fill((159, 182, 205)) font = pygame.font.Font(None, 17) num = 0 done = False while not done: display(str(num)) num += 1 pygame.event.pump() keys = pygame.key.get_pressed() if keys[K_ESCAPE]: done = True
Mit diesen Methoden können Sie nicht blockierende Konsoleneingaben in Ihren Python-Anwendungen implementieren und so eine kontinuierliche Verarbeitung ermöglichen, während Sie in Echtzeit auf Benutzereingaben reagieren.
Das obige ist der detaillierte Inhalt vonWie implementiert man nicht blockierende Konsoleneingaben in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!