質問: 現在,PythonでFXの自動取引ツールの作成を試みています. mainでループ処理は大まかに以下のようになっています ``` while(1): 現在価格を取得 if 条件: 注文関係の処理 ``` コマンドラインから`end`という文字列を与えることによってこのループから抜けて 取引を終了するような形にしたいのですが,`inut`を使うと入力を受け取るまで他の処理が止まってしまいます. 常に入力を受け取れる状態にしておきつつも他の処理を止めないようにするためにはどうしたらよいでしょうか? よろしくお願いします.
回答: プログラムを止めるなら、Ctrl-C を押せば良いのですが。 標準入力から入力があるのかをチェックすれば良いでしょう。 ``` import select import sys while 1: 現在価格を取得 if 条件: 注文関係の処理 inp,_,_ = select.select([sys.stdin],[],[],0) if inp: if input()=="end": break ``` と思ったのだけど、Windowsだと、`select`でエラーになります。 スレッドを分けて、入力専用のスレッドを作るのでしょうか。 ``` import threading loop_cond=True def end_check(): global loop_cond while loop_cond: if input()=="end": loop_cond=False end_check_thread = threading.Thread(target=end_check) end_check_thread.start() while loop_cond: 現在価格を取得 if 条件: 注文関係の処理 ```