静かなる名辞

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


2020-04-01から1ヶ月間の記事一覧

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

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

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

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

Pythonの文字列は同じ長さでもメモリ消費量が違うときがある

概要 Pythonの文字列は、内容によって一文字の幅が違います。 なお、Python3のstrを前提にさせてください。 実験 sys.getsizeofで測ってみます。これを使うのはちょっと議論の余地がありますが、 object のサイズをバイト数で返します。object は任意の型の…

Pythonの文字列メソッドとバイト列の微妙な関係

Python3になってからは普段あまり気にしなくても良いようになりましたが、Pythonの文字列っぽい型にはstrとbytesがあります*1。そして、strもbytesも同じようなメソッドを実装してくれています。組み込み型 — Python 3.8.2 ドキュメント組み込み型 — Python …

DataFrameをprintしたときヘッダの日本語の列名がずれないようにする

日本語の列名のDataFrameを扱うことは、日本人のpandasユーザにとってはありがちな展開だと思うのですが、問題はprintするとヘッダがずれてしまうことです。 >>> import pandas as pd >>> pd.DataFrame({"あああ":[1, 2], "いいい":[3, 4], "ううう":[5, 6],…

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

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