Pythonの高速化するならCythonで…

 という話もあるので、めも。

結論から言うと

 既にPythonで書いたコードがあるなら、Cython向けに既存のコードを整えて.pydを生成する方が楽かも。
 まだPythonで書いたコードがなくても、Pythonに親しんでいる人はCythonがいいかも。

 ならC言語使って.pyd作る理由なんてないじゃん。という意見も出るかもしれないけど、Pythonで閉じた環境で完結できるならそうだと思う。

C言語を使うメリットを考えてみると

 以下のようなことが思いつく。
 ・既にC言語で何らかの処理を書いている
 ・他のC言語ベースのライブラリを併用する
 ・Cで書く方が最適化の効果も得やすい可能性(Cythonとの比較で)
 ・並列化処理(マルチスレッド)の導入
 ・ゴリゴリにクロックやメモリサイズを削る最適化をしたい

 ただ、ゴリゴリに最適化する人はかなり限定されるハズなので、実際には既存のCライブラリの利用やマルチスレッドの導入がメインになりそう。

 DCCツール向けに開発している人だと、開発用のAPIはDLL提供されてるし、大量データの計算にスレッド処理も導入したくなるハズなので、頑張ってC言語を覚えるのも面白いのではないかな、と思います。

 Windowsだと環境整備が面倒、とかはあるかもしれませんが。。

実行ファイルにPython埋め込みでスクリプト処理させる

 とりあえず、サンプルになっている処理を書き換える形で試してみた。

 動作的には、以下の通り。
 ・自作のEXEを起動
 ・EXE内でPythonモジュールのメソッドをコール
 ・呼ばれたメソッドは、渡された値を処理して値を返す

 ポイントは、呼ばれたメソッド内でimportするモジュールが、自作のEXE内で登録したモジュールであるという所。
 Pythonスクリプトから自作のEXEを経由して別のプログラムを呼び出し、その結果を実行中のPythonスクリプトで処理できるので、自由度の高いPythonスクリプトを記述できるようになる。

 いろいろデータハンドリングが面倒なので、すんなりは出来ないかもしれないが、より自由度の高いPythonスクリプトの実装が可能になる。
続きを読む 実行ファイルにPython埋め込みでスクリプト処理させる

Pythonの仮想マシンの処理

Pythonの仮想マシンの処理について解説しているページを見つけたので、めも。

dis/inspect モジュールと ceval.c を使った Python のハッキング

Python Virtual Machine 関連のソース・コード

python のデコレーター構文@decorate

このくらいコード読めないと、埋め込みの実装とか難しいかなぁ…

PythonでMayaのPlugin作るのは

API2.0を使った方がいい。速度が違うので…
前回の記事は旧APIを参考にしていたのだけど、検索で引っ掛かったのが旧APIだったので…

これからPluginをPythonで書くなら、API2.0を使おう。

ヘキサドライブさんの記事が参考になると思う。
API2.0も旧APIも基本C++のラッパーなんで、基本的な所は同じ。
ただAPI2.0の方が、よりPythonっぽい書き方で実行速度も改善されてる。(ものによって数倍速いみたい)

MayaPluginをPythonで記述

めも。

記述の参考。

https://download.autodesk.com/us/maya/2009help/API/zoom_camera_cmd_8py-example.html
https://download.autodesk.com/us/maya/2009help/API/motion_trace_cmd_8py-example.html

たぶんplugin1つに複数コマンドを内包させるのは、registerCommandを複数呼ぶだけだと思う。

その後

試しに2つ定義してみたら、別々の実装を処理しに行った。
なので、複数コマンド用にクラス定義で実装を増やせばOK.