前のC#からのPythonの呼び出しの記事から新たに気が付いたことがあったので備忘録も含めて記載する.
使用するのはPython for .NETである.
git clone https://github.com/pythonnet/pythonnet.git
でgithubからpythonnetをダウンロードする.前にも述べている通りPythonの最新版は更新が速くてNugetパッケージは更新が追い付いていない.
ダウンロードされたフォルダの中にpythonnet.slnファイルがあるはずなのでこれを開き(Visual Studio 2017).
その後,ビルドの構成はReleaseWinPY3でx64(実際には実行環境に合わせる)でビルドする.するとbinフォルダにPython.Runtime.dllが出来上がる.
今回は呼び出した先のPythonのコードでmultiprocessingを使ってみた.
すると,Pythonで書かれている部分だけでなく.NET Frameworkで動いているプロセス全体が複製される.
C#から呼び出す先でマルチプロセスを使いたい場合には,プロセス全体が複製されることを前提に書いておく必要がある(複製された先からQueueなどの処理を行って処理を返さないと呼び出し元のプロセスはいつまでも待つ(特別な処理を書いていれば別だが)).
意図しない動作をしないように十分に注意する必要がある.
タグ:Python