コードの整理をどんどん進めてるうちに、結構手が入ってしまいました。
まず「値」サーバなるものを追加しました。
これはファイルパスの文字列を整数値で扱いたいために考えたサーバで、 パス文字列をサーバの中のリストに登録追加していって、 サーバに登録済みの文字列を渡すとリスト中のインデックスの整数が返り、 整数を渡すと対応する文字列が返る。
というような動作をするものでした。
まず、この登録文字列に対して「インデックス以外の整数でも返せるようにしたいなぁ」 というところから、プロパティの値を別に持たせるようにしようと。
ならば、値は整数だけじゃなく他の値も返してくれたら便利では?
プロパティの型情報も保持させなきゃ。
サーバとの通信で値を流すなら、ちゃんとシリアライズできねば。
可変長のリストもプロパティの値として扱いたいなぁ。
どうせなら辞書の形式も。
どんどん妄想が膨らんでしまい、bin.py pks.py sock.py val.py の辺りに落ち着きました。
あと、画像、動画を参照するサーバもかなり手を入れました。 結局動画の読み込みは、1つのフレームの画像を辞書で保持してメモリ使いまくり方式に。 そして呼び出して使う側もサーバを使う前提固定に。
$ cat v29.patch | ( cd rt ; patch -p1 ) $ cd rt $ make clean $ make
色々と整理したところで、 とりあえず交点を求める処理のサーバだけC言語版を実装して、 とりあえず処理速度の測定。
別プロセスのところをC言語で実装版でイメージ用のサーバプロセスを使う場合
$ ./cg.py eyep=[0,0,0],200,10 sec=10 data_name=objs name=out_v29/objs_1_2_sc n=1 init_sec=5 div=2 use_srv : wh : 76800/76800(100.0%) : fin 1m 44.72s 以前の v28 wh : 76800/76800(100.0%) : fin 1m 18.06s v27 wh : 76800/76800(100.0%) : fin 1m 8.39s v26 wh : 76800/76800(100.0%) : fin 1m 6.02s
一方、処理速度はじわじわ低下する一方。
サーバ群は起動しっぱなしなので、落としたい場合はとりあえずkillコマンドで。
$ ps ax | grep ' boot$' 20739 ?? Ss 0:04.73 /usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/Resources/Python.app/Contents/MacOS/Python ./val.py boot 20750 ?? Ss 0:18.00 /usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/Resources/Python.app/Contents/MacOS/Python ./img.py boot 20765 ?? SNs 0:15.19 ./cross boot $ ps ax | grep ' boot$' | cut -d ' ' -f1 20739 20750 20765 $ ps ax | grep ' boot$' | cut -d ' ' -f1 | xargs kill $ ps ax | grep ' boot$' $