質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2305閲覧

別スレッドのinput()に対して終了処理を行うorキー入力があったと認識させたい

退会済みユーザー

退会済みユーザー

総合スコア0

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/15 03:00

前提・実現したいこと

Python3で、メインスレッドのフラグがたったら
別スレッドのinput()を終了、若しくは任意のキーが入力されたと認識させてinput()の入力待ちを抜けたい

該当のソースコード

Python

1import time 2from threading import Thread 3from multiprocessing import Value 4 5 6def main(): 7 flg = Value('i', 0) 8 9 th_user_input = Thread(target=user_input) 10 th_user_input.start() 11 12 flg_change(flg) 13 14 while True: 15 if flg.value == 1: 16 """ 17 フラグが立ったらここでuser_input()に対して終了処理or'q'を送信 18 """ 19 break 20 21 22def user_input(): 23 while True: 24 inp = input('>') 25 if inp == 'q': 26 break 27 28 29def flg_change(flg): 30 time.sleep(10) 31 flg.value = 1 32 33 34main()

試したこと

readline()を追加しinput()の代わりにしようと試みたが、ブロッキングは回避できるものの、user_input()が終了できない

Python

1def user_input(flg): 2 import sys 3 4 while True: 5 if flg.value == 1: 6 break 7 8 inp = readline(sys.stdin) 9 if inp is None: 10 contiue 11 elif inp == 'q': 12 break 13 14def readline(fd): 15 import select 16 17 _return = '' 18 (r, w, e) = select.select([fd], [], []) 19 20 if len(r) == 0: 21 _return = None 22 elif len(r) == 1: 23 _return = r[0].readline() 24 25 return _return

補足情報(FW/ツールのバージョンなど)

WindowsとRaspberry Pi3をteratermで繋いで、Raspberry Pi上でPythonを動かしています。
GUIを前提としたパッケージは使えません。
解決方法をご存じの方がいらっしゃいましたら、ご教授頂けると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

なんかいけました。あdふぁdf

投稿2021/04/15 07:35

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問