大きなデータを渡すとけっこうな時間がかかっていることがわかった
結論
- 一度JSONにして渡すと早かった。たぶん型変換に時間がかかっているので、一思いにそれぞれの側のライブラリに任せるとよい様子
Jason.encode!(data)
import json
json.loads(data_json)
おまけ
- 呼び出しが多くなると毎回 :python.start/:python.stop して時間がかかるため、Agentなりにしてプロセスを取っておく
- python側でNoneとしたいときは、python側で変換するしかなさそう
json.loads(json_data)
が null を None にしてくれるので、elixir側では “None” のような文字列にしておいて(取り決め)、python側で null に置換する作戦が考えられるjson_data = json_data.decode().replace('\"None\"', 'null')
decode()
はelixir側”文字列”を渡すとpython側でbyte型になるので必要