2013-06-21 209 views
2

對不起,如果這是一個愚蠢的問題,但我一直在尋找答案,但我找不到一個答案。我正在使用PySide在Mac OS X上使用Cython創建一個gui應用程序。由於速度問題,我選擇使用Cython。我想有一個小問題會是,我是否在無所事事上做文章,我甚至需要擔心速度問題?發佈在Mac OS X上用Cython寫的GUI應用程序

我聽說Cython編譯器創建了.c文件。但是,我不能將這些作爲我的申請(顯然)分發。我想分發它作爲一個應用程序包(.app),而不僅僅是一個可執行文件。

我曾嘗試使用編譯Xcode的C代碼,但它創造了Unix的可執行文件,它在運行時,打開一個終端窗口,這是不能接受的,看到我的應用程序有它自己的GUI。

我也查看了關於bundle的Apple文檔,如果需要的話我可以手動創建一個,但我更喜歡由xcode(或其他某個程序)創建的包,所以涉及的問題更少。

編輯:
我不會從用Cython得到充分速度受益,但我相信我會得到大部分。它會將我的Cython代碼編譯爲python包(格式爲.so格式),然後從py2app打包的python應用程序中訪問它,它所做的只是導入庫並啓動gui?這只是我想到的一種解決方法,所以請隨時告訴我它是否愚蠢。

回答

1

將它的工作編譯我用Cython代碼到Python包(在 的.so格式),然後從 py2app打包Python應用程序,這是所有它確實是進口圖書館訪問,並啓動GUI?

這就是Cython所做的。它首先生成優化的.c.h文件,然後將它們編譯爲Python包作爲共享對象.so文件。所以答案應該是。實際上,編譯之後,.so獨立於生成的源文件,並且應該可供任何嵌入Python解釋器的第三方應用程序動態加載。 Py2app應該可以。至少我想是這樣......

其餘的,我對Xcode不太瞭解。

編輯:可能會看看--use-pythonpath和/或--frameworks py2app的選項。

+0

那仍​​然會有很好的速度獎勵吧?我認爲它會,因爲python解釋器必須讀更少的python代碼。 – KFox

+1

你擁有的C代碼越多,它的速度就越快。閱讀Cython的基本知識:第一個衆所周知的改進是,通過顯式輸入 - 「cdef keyword」可以節省很多。例如,在[for loops]中遞增時(http://technicaldiscovery.blogspot.fr/2011/06/speeding-up-python-numpy-cython-and.html)。除了[this](http://docs.cython.org/src/userguide/early_binding_for_speed.html),[this](http://docs.cython.org/src/tutorial/profiling_tutorial.html),還[本](http://blog.perrygeo.net/2008/04/19/a-quick-cython-introduction/)。 –

相關問題