静かなる名辞

pythonとプログラミングのこと


threading

concurrent.futuresはなかなか便利かもしれない

概要 「いまさら?」と思われるかもしれませんが、concurrent.futuresを使う機会があり、けっこう幸せでした。 本当に「いまさら?」なのですが、どういうとき便利でどういう風に使えるのか書いておきます。 リファレンス concurrent.futures -- 並列タスク…

ThreadPoolExecutorのinitializerについて調べたのでメモ

概要 ThreadPoolExecutorにはinitializerという便利そうなオプションがあります。でもリファレンスの説明があっさりしていて、挙動がよくわからなかったので調べました。 先に断っておくと、このオプションはPython3.7で追加されたもので、それ以前のバージ…

Pythonで遅いサブプロセスをスレッド並列でたくさん叩く

概要 いつ使うんだと言われてしまうPythonのスレッドですが、Pythonの外で遅い原因があるときは高速化に威力を発揮します。 たとえばこんな感じです。言語はbashです。 #!/bin/bash sleep 3 echo "hoge" 特にひねりはありません。slow_command.shとでもして…

numbaとnumpyで速いループ処理を書くためのガイド(スレッド並列化のおまけつき)(実はポエム)

はじめに この記事は「Pythonおっせーよ」と思っている、そこのあなたのためのものです。 PythonはLLなので遅いです。その分、楽に書けるし、動的型付けでダイナミックなことができて「楽しぃぃいい」のですが、それでも遅くて困るときがあります。特に数値…

【python】threadingでsleep中に即座にスレッドを止める

pythonのスレッド活用というと、こんなコードがすぐに思い浮かびます。 # エンターされるまでは数字を更新して、 # エンターされたら終了する(つもり) import time import threading flag = True def th(): i = 0 while flag: print("\r{}:".format(i), en…

tkinterで遅い処理を別スレッドに投げ画面が固まらないようにする

tkinterでコールバック関数の実行に時間がかかる場合、実行している間ずっとGUIが固まります。そこで、別スレッドに実行を投げてこれを回避することができます。