(StackOverflow上的第一個問題,很高興在那裏:))IronPython 2.7.1中的導入模塊非常慢
我使用IronPython 2.7.1和C#.net 4.0。
我使用C#啓動我的python腳本。 我有大約20個導入大量時間的個人模塊。 E.g:
如果我有module1.py,module2.py,module3.py,module4.py, 和main_script.py。
main_script.py進口模塊1和模塊2
兩個模塊1和模塊2輸入單詞數。
模塊1和單詞數進口版Module
等
模塊可以具有大量的行代碼。
我看到的是當我執行main_script.py時,只需要4-5秒就可以導入模塊。
我試圖用pyc.py編譯dll中的所有模塊,然後使用ngen,但使用myEngine.Runtime.LoadAssembly()添加此dll時,我看不出有什麼區別。
然後,我想使用py_compile.py來獲取pyc文件,但似乎不工作,因爲IronPython.Modules.MarshalWriter類(函數WriteObject(object o))不支持IronPython.Runtime.FunctionCode類型。 (我在編譯時遇到了「unmarshallable object」異常)
我對Python和IronPython都不是很熟悉,也許我沒有理解該語言的所有細節(實際上我是這麼認爲的)。搜索網絡的解決方案,但似乎我現在卡住了。
任何想法,以提高進口性能?
好的。謝謝你的迴應,這很清楚。實際上,我的腳本非常短,所以有時需要更多時間導入模塊,而不是執行腳本。 我的主要問題是,我在某些情況下需要運行數百個腳本,並且每次都必須執行導入過程。 但無論如何,非常感謝您的回覆。 – GradlonGwen 2012-02-20 08:10:53
我假設你將IPy嵌入到C#應用程序中,這取決於你如何解釋你的問題。你是否試圖將你的導入導入到一個單一的作用域中,然後將這個作用域作爲一個Global模塊使用,你可以在腳本中導入這個模塊。這可能會讓你獲得更好的表現?或者你可以嘗試重新使用一個腳本範圍,如果你確信你的腳本不會被剩下的變量所污染(例如確保你自己在你的腳本中重新初始化變量) – Vassi 2012-03-02 18:24:28
對不起,遲到了,我有在另一個主題上工作。 由於我們的系統,我無法創建一個作爲我所有腳本的全局模塊的範圍,因爲每個腳本都在另一個執行後死亡的進程中執行。 我們在Python的內存管理方面存在問題(大量數據不是垃圾數據,不知道爲什麼),我們發現的獨特解決方案是在分離過程中執行每個腳本。 – GradlonGwen 2012-03-28 12:20:04