バタイユゲーム支援ツール強化版の並列化を検討してみた。
結論から言うと難しい。
後の為に、試した事を以下にメモしておく。
1.背景
バタイユゲーム支援ツール強化版はpythonプログラムからEXCELシートを
アクセスしてマクロを起動させて結果を取り込んでいる。
これを複数回(ユニットの数)繰り返している。
そこで、この複数回の処理を並列化できないか検討した。
2.テストプログラム
バタイユゲーム支援ツール強化版を使うよりも簡単なプログラムで
並列化が可能か試してみる。
EXCELシートは下図を使った。B5セルにpythonプログラムから賽の数を設定し、
マクロ(賽の目表示のBoxからリンクしているもの)を動かす。
結果はB7からB12までに表示される。
3.pythonプログラム
(1)並列化前
下図[6]のようにfor文で関数rdiceを複数回呼んで結果を取り込む。
(2)並列化後
下図[7]のように並列化を試みてもエラーになる。
原因は関数rdiceの中でEXCELをアクセスしてマクロを起動している為と思われる。
python内の処理であれば、下図[8][9]のように問題なく処理できる。
上記[7]と下記[9]の違いは呼んでいる関数の違いのみである。
4.参考文献
下記のWEBページにお世話になりました。ありがとうございます。
・Python並列処理(multiprocessingとJoblib)
・Python: Joblibで並列処理プログラミング
次回へ続く
<個人的な感想>
pythonからライブラリを介してEXCELを制御している場合には、
並列化ができそうにない。
EXCELとの連携を並列化するのは無理かもしれない。