multiprocessing.forking prepareメソッドで落ちる..

めも。
Mayaからプロセス起動できない時のデバッグトレースのログ。

先に結論から書くと、prepareメソッドでimp.load_module 呼び出しをする際にmayaから起動した場合、’import maya’を実施してしまい、ImportError: ‘No module named maya’で終わってしまう。(これは、get_preparation_dataメソッドで d[‘main_path’]に mayaのフルパスが渡される為に起こる。)

とりあえず動かすようにするには、set_executable(exe_path, pyfile_path)とかで呼び出せるようにする仕掛けが必要になりそう。(set_executableについては別記事を参照のこと。)
実際に、set_executable, get_preparation_dataメソッド辺りを書き換えたものを参照するようにしてみると動作を確認できた。

ただ標準添付のモジュールを弄ることになるので、PYTHONPATHに最優先でカスタムのmultiprocessingモジュールを参照するような対応をして、標準添付のモジュールを変更しないような対応が必要。

補足。
multiprocessingモジュールにはいろいろなプロセス起動方法があるけど、試したのはstart~joinで行う単純なプロセス起動のみ。
Pool使ったりしている場合は他にも対策が必要みたいで、前述の対策だけではプロセスが生きたままになってしまった。
単に、poolをclose&joinし忘れていただけだった。

うまく動く場合(CPythonでファイル指定した)はこんなログに。

その後

 頭いい人が、こうすりゃいいんだよって記事書いてたのをたまたま(自分のページに行こうとしたらタイプミスで検索になっちゃって)見つけちゃったので、めも。
 こうやって使うものだったのね…ナルホド勉強になります。