Pythonプログラムが時々固まっていると思ったらコマンドプロンプトの仕様でした

[お知らせ]Pythonで作ったbitcoinのアービトラージ自動売買プログラムを販売いたします!(カスタマイズ相談可)


こちらのブログではPythonを使ってビットコインのアービトラージ取引の自動化に挑戦していますが、プログラム開発初期の頃から時々プログラムが原因不明のフリーズを起こしていることがあり、長い間悩まされてきていました。プログラムにログを仕込んでもフリーズの原因と思われる痕跡もなく、フリーズを起こしてもCtrl + Cを押すと何事もなかったかのように動き出すので、お手上げ状態でした。

時々しか起こらないのもあり原因特定を諦めていたのですが、ある時また止まっていたのでまたかと思いPythonが動いているコマンドプロンプトのウィンドウサイズを最大化してみたところ、プログラムが急に復帰して動き出しました。この現象をみてさすがにプログラム側には問題がないだろうと確信し、ネットでいろいろ調べてみたところ下記ページを見つけました。
https://www.it-swarm.dev/ja/command-line/windows-10%E3%81%A7%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%8C%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BA%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F/1056490658/
元は外国語のページで自動翻訳されたような文章ですが、意味は伝わりました。

どうやらWindows10から入ったコマンドプロンプトの機能のようで、「簡易編集モード」というものが標準でONになっているようです。コマンドプロンプトのプロパティを開いたところ下図のように項目がありました。

こちらがONになっていたのが今回困っていた現象の原因でした。プログラム動作中にコマンドプロンプトのウィンドウをクリックするとクリックした部分にカーソルが表示され、プログラムが停止します。そのときプログラム名が「コマンドプロンプト」から「選択コマンドプロンプト」に変わり、モードが変わったことがわかります。Ctrl + Cを押したりEscを押したりウィンドウサイズを変えたりするとこのモードが解除されるようです。

この簡易編集モードをオフにすることで意図せずにプログラムが停止することがなくなりました。こんなことが原因だったのか。。。


bitbankの口座開設はこちらからどうぞ!

bitbank

Liquidの口座開設はこちらからどうぞ!

QUOINEX

Coincheckの口座開設はこちらからどうぞ!

コインチェック