ホームページ >バックエンド開発 >Python チュートリアル >Python コマンドラインからのノンブロッキング入力の小さな例

Python コマンドラインからのノンブロッキング入力の小さな例

WBOY
WBOYオリジナル
2016-06-16 08:46:281754ブラウズ

ググってみたところ、select は基本的にノンブロッキング監視を実装するために使用されることがわかりました。しかし、問題は、select を使用して監視した後、getchar() のように 1 文字の入力をすぐに受け取ることができないことです。馬車が戻るのを待ちます。

苦労の末、Google... [オーケー、それでも Google。 Google なしでは何もできません。 ]

最後に、多くの英語情報を入力し、次の利用可能なコードをつなぎ合わせて、単一文字のノンブロッキング入力を実現しました。

以下のコードを表示します。 # -*- コーディング: utf-8 -*-
""" Python 非ブロック入力

"""__author__ = 'Zagfai'__version__= '2013 -09-13' import sysimport select
from time import sleep
import termios
import tty

old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())
while True: sleep(.001)

if select.select( [sys.stdin], [], [], 0) == ([sys.stdin], [], []):
c = sys.stdin.read(1)
if c == 'x1b': ブレーク
sys.stdout.write(c)
sys.stdout.flush()

termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)


print raw_input('123:')


termios と tty という 2 つのモジュールが使用され、行入力から単一文字まで tty の入力モードを制御するために使用されます。

終了

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。