元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

Python

Pythonでいいかんじに 小数部の桁数を制限する

pythonで小数部の桁数を制限する場合、decimalを使うのが一般的だそうだ。 decimalは有効桁数を制御できるけど、JavaのBigDecimal#setScaleのように小数点以下の桁数を制限する機能がなかった。そんなわけでいい感じに 小数部を成型してくれる関数を作った。…

JSON形式でPickleがしたい!

Pythonオブジェクトのシリアライズにはpickleモジュールがあるが、こいつは独自形式のバイナリを出力する。どこかの超人のようにバイナリをそのまま読めないので、JSON形式でpickleできるようなモジュールを作った。pickle utility to json format . · GitHu…

pypyで高速化したらメモリリークしたお話

Pythonクラスを関数内で定義すると、pypyでの実行時にメモリリークが発生して実行速度が遅くなる。以下のコードをPythonで実行する。 import time class Leak: def proc(self): class Inner: def something(self): i=1+1 for _ in range(10000): a=Inner() a…

Pythonで共有メモリを使った並列処理をするときのメモ

Pythonで大きめのデータ(数百M~数GB)を解析しようとしたときの技術メモ。Pythonを並列処理で高速化しようとするとGILの制約を受ける。この問題は複数の同一プロセスを起動することで回避できるが、巨大なデータを扱う場合、それが読出専用であってもメモリ…

Python3.7をWSLに入れる

apt search Python3.7*で見つからないとき。ppaをこの辺から追加する。 sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get updateそのあとにapt-get install python3.7でOK 参考 How to Install Python 3.7 on Ubuntu 18.04 | Linuxize

pypy3のセットアップメモ

WSLにPyPy3をセットアップした時のメモです。 matplotlibとnumpyとscypyとpandasをセットアップできるようにするのが目標pypyのセットアップhttps://askubuntu.com/questions/441981/how-to-install-pypy3-on-ubuntu-for-newbies sudo add-apt-repository pp…

Jupyter NoteBookとPythonで上位階層のimportをする方法

Jupyter NoteBookで__file__を使って上位ディレクトリをimportしようとすると失敗する。__file__が定義されていないから。 代わりにpathを使えばよいらしい。 import sys import os try: __file__ sys.path.append(os.path.join(os.path.dirname(__file__), …