アカウント名:
パスワード:
今でもマクロというかアドインは Python(IPython) で書いてるけど、何が変わるのだろうか。.NET な Office Interop で書けてるのが便利なので、VBA 相当になったら不便になるだけだし。
COMに縛られてる限り.NET上での実装はどうしても不安定さを伴うからなぁ(なまじ旧来のInteropとCCWが混在してるとややこしくなるし)
PythonでのCOMリソースの解放ってどう実装されるんだろう
元々の Python (CPython) は参照カウントでの寿命管理だし、スレッドも GIL とか使った微妙なものなのであまり問題は無いんじゃない?
> 元々の Python (CPython) は参照カウントでの寿命管理だし、COMと.NETは違う世界で、Interopが橋渡しをしてるだけだから、.NET側のオブジェクトを参照カウントでの寿命管理するだけでは駄目なの。.NET側のランタイム(GC含む)がリソース解放する前に終了しちゃったらCOM側のリソースが解放されない(=メモリリークの原因になる)から。
# だからちゃんとReleaseComObjectしないといけないのが原則になる
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
IronPythonとの差は (スコア:1)
今でもマクロというかアドインは Python(IPython) で書いてるけど、何が変わるのだろうか。
.NET な Office Interop で書けてるのが便利なので、VBA 相当になったら不便になるだけだし。
Re:IronPythonとの差は (スコア:0)
COMに縛られてる限り.NET上での実装はどうしても不安定さを伴うからなぁ
(なまじ旧来のInteropとCCWが混在してるとややこしくなるし)
PythonでのCOMリソースの解放ってどう実装されるんだろう
Re: (スコア:0)
元々の Python (CPython) は参照カウントでの寿命管理だし、
スレッドも GIL とか使った微妙なものなのであまり問題は無いんじゃない?
Re:IronPythonとの差は (スコア:1)
> 元々の Python (CPython) は参照カウントでの寿命管理だし、
COMと.NETは違う世界で、Interopが橋渡しをしてるだけだから、.NET側のオブジェクトを参照カウントでの寿命管理するだけでは駄目なの。
.NET側のランタイム(GC含む)がリソース解放する前に終了しちゃったらCOM側のリソースが解放されない(=メモリリークの原因になる)から。
# だからちゃんとReleaseComObjectしないといけないのが原則になる