ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

Python:isAliveが存在しないエラーへの対処

2020年に開発し2021年に運用した、Pythonのプログラムは、何度も書いていますがPython 3.6で動作していました。
ajya.hatenablog.jp

2022年の運用では、Ubuntu 20.04 LTSに最初から導入されているPython 3.8か、最新のPython 3.10で動作させる予定で試して、ワーニングが解消できました
ajya.hatenablog.jp

ワーニングが解消できたので、もうこれで大丈夫だろうと動作確認を進めたら、エラーが発生しました。

ソースコード
Photo by Alex Chumak on Unsplash

エラーは、

'Thread' object has no attribute 'isAlive'

と表示されました。
スレッドオブジェクトにisAliveがないという意味と解釈し、Python 3.10のスレッドのマニュアルを見ると、isAliveメソッドはなく、is_aliveメソッドがあります。
docs.python.org

Python 3.6のスレッドのマニュアルを見ても、isAliveメソッドはなく、is_aliveメソッドがあります。
docs.python.org

なぜテスト環境はPython 3.6なのに大丈夫なんだ?と悩んで、検索をすると、Python 3.9でisAliveメソッドが削除されたとわかりました。
bugs.python.org

Python 2.7のマニュアルでは、isAliveメソッドとis_aliveメソッドの両方が書かれています。
docs.python.org


ここまで確認できたので、isAliveメソッドをis_aliveメソッドに書き換えても同一の動作をすると確信できました。
Python 3.8で動作させていれば、setDeamonメソッドのワーニングと同様に、ワーニングが表示されて気づけたのでしょうか。