Python間(CPython, IronPython)の壁を乗り越えた呼び出し


IronPython/64bit/ Python 3とか、RhinoでPythonをやったらすごいんじゃないか・・と思っている私も含めた多くの方々にはCPythonの歩みにIronPythonがあわず、手に負えない状況となってきましたが、みなさま、いかがお過ごしでしょうか?

以前、.NETのIronPythonから、numpyを使う例なども出したことがあります。

numpy以外のもの、も使いたいものも出てきます。

Pythonでいろいろやりたいことをつなげていくと、標準のCPythonが開発のメインになって、その便利さに慣れきってしまうと、ツールなども、あるいは言語バージョンなども、IronPython特有の何かが不自由に思うことが多くなってきます。

「ふつうのPython( CPython )」と「.NETのIronPython」の相互呼び出しが出来れば・・、と思うわけです。アイディアとしては、いくつかあるとは思います。

1)CPythonから .netのクラスの機能を.net的に呼び出す

http://pythonnet.github.io/

2)IPC / RPC (RPyC)

良い切り口(インターフェース)を設計できれば、プロセスを分け、プロセス間通信や、リモートプロシージャコール(RPC)、なども一つの方法でもあります。Pythonであれば、RPyCというモジュールを使うとカンタンになります。

https://docs.python.org/ja/3/library/ipc.html

https://qiita.com/ikuyamada/items/a75088fe5728273c2e41

などなど。

 

プラグインのPythonのプログラムで全部やっていたものを・・

⇒一部、クライアント・サーバー(社内のDBや高速なワークステーション)にする

⇒一部、クラウド(Linux/MySQLやWEB系RPC、あるいはGoogleのAPI)にする

ことができます。

 

手間はありますが、実装やテストが分担される、ということになりますヨ。

運用も、大変なところはありますが、経験を活かせる人もいるでしょう。

 

2018/02/14 追記

と思ってましたら、CPythonを使えるよう、RPC的にPythonでアプローチする(RPyCモジュールを使う) GHプラグインを見つけました。MITご謹製。

http://www.food4rhino.com/app/gh-python-remote