IronPython2.0正式リリース
予定通りやってきました.これは早速Svitchで使ってみよう.
CPython2.5とIronPython2.0のパフォーマンス比較.
IronPython - Performance Comparisons
トータルで+62.7%程度CPythonに比べて遅くなっているだけで十分な性能を示していると思う.例外を投げる(?)TryRaiseExceptだけ飛び抜けて遅い(+4478.9%)のがちょっと不思議.
組み込みモジュール
IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.1434 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.builtin_module_names ('clr', 'sys', '__builtin__', 'exceptions', 'cmath', 'binascii', 'array', '_codecs', '_weakref', 'collections', '_winreg', '_sre', '_random', '_functools', 'xxsubtype', 'time', 'thread', '_struct', 'socket', '_sha512', '_sha256', '_sha', 'select', 're', 'operator', 'nt', '_md5', 'math', 'marshal', '_locale', 'itertools', 'imp', 'gc', 'errno', 'datetime', 'cStringIO', 'cPickle', 'copy_reg')
ここに載っていないモジュールはCPython2.5のライブラリにパスを通すか,.NETのライブラリを直接使うかしないといけない.Svitchみたいに配布するアプリケーションの中で使う場合は基本的に後者かな.
AddReferenceByPartialNameはやっぱり必要
2.0になったら.NET標準のアセンブリについてはimportだけで済ませられるのかな?と思ってたけどそんなことは無かった.clr.Referencesの中に読み込み済みのアセンブリ一覧が入っていて,importできるのはそこからのみ.起動時の中身を見るとmscorlibとSystemしか入ってない.
AddReferenceByPartialNameをするとSystem.Windows.Formsのアセンブリも追加されるが,ローカルの辞書には追加されないのでさらにimportも必要.ここらへんは1.1系とあまり変わってないような.
>>> import clr >>> clr.References (<mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>, <System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>) >>> clr.AddReferenceByPartialName("System.Windows.Forms") >>> clr.References (<mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>, <System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>, <System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>)
C#からの動的な利用方法
チュートリアルとかサンプルに入ってないみたい…
見っけた.
IronPython in Action: Download Sources
Chapter15のソースコードアーカイブ内にDynamicObjects(C#版)とDynamicObjectsVB(VB.NET版)が入っていて,その中のProgram.csに次のような基本的なIronPython2.0の使い方が載ってる.これはありがたい.
- (1 + 2 + 3 + 4)のようなPython式の実行
- lambdaの生成と呼び出し
- タプルなどのPython型の使用
- 独自クラスのインスタンス生成とメンバ関数の呼び出し
- 組み込み関数の使用
- 組み込みモジュールの使用
もっと詳しいのはこっちのサイトを見るといいかな.
クックブック→Contents - IronPython Cookbook
関連リンク→IronPython - Home