2009-08-10 101 views
4

我正在考慮用Python編程我的應用程序的網絡相關功能,而不是C/C++ API。網絡的預期用途是在我的應用程序的兩個實例之間傳遞文本消息,類似於儘可能通過網絡傳遞玩家位置的遊戲。需要建議 - Python中的網絡連接 - 一個好主意?

雖然蟒蛇插座模塊似乎充分和成熟,我想檢查是否有python的模塊可以是在開發的後期階段問題的侷限性。

你認爲蟒蛇插座模塊的內容:

  1. 它是生產高質量的軟件可靠,速度不夠快?
  2. 是否有任何已知的限制,如果我的應用程序可能是一個問題。需要比常規的客戶機 - 服務器消息傳遞更復雜的網絡?

由於提前,

保羅

回答

1

要回答#1,我知道,除其他事項外,在線前夕(MMO的)使用Python的變種爲他們的服務器代碼。

+0

* Eve使用Stackless Python。 – Kevin 2009-11-18 08:28:40

1

蟒蛇是在線前夕用途是StacklessPython(http://www.stackless.com/),並且據我所知,他們用它來實現它通過如何使用微進程和諸如此類的東西線程。但是由於python本身可以處理像網絡上有4萬人的MMO這樣的東西,我認爲它可以做任何事情。

這個不好的答案,而不是真的回答你的問題,而不是以前的答案。

Alan。

3

Python是一種成熟的語言,幾乎可以做任何事情,你可以在C/C++做的(甚至直接內存訪問,如果你真的想傷害自己)。

你會發現你可以在很短的時間內編寫漂亮的代碼,這段代碼從一開始就可讀,它會保持可讀性(即使在返回一年之後,你仍然會知道它的功能)。

的Python的缺點是代碼會有些緩慢。 「有些」如「在某些情況下可能太慢」。所以通常的做法是儘可能在Python中編寫代碼,因爲它會使您的應用程序可維護。最終,您可能會遇到速度問題。這是考慮重寫你的應用程序的一部分,在C.

的時候這種方法的主要優點是:

  1. 你已經有一個正在運行的應用。將代碼從Python轉換爲C要比從頭開始編寫要簡單得多。
  2. 您已經有一個正在運行的應用程序。在將Python的一小部分翻譯成C之後,您只需測試一小部分,然後就可以使用應用程序的其餘部分(不會更改)來執行此操作。
  3. 您不需要預先支付價格。如果Python對你來說足夠快,你永遠不需要做可選的優化。
  4. Python比C更強大。Python的每一行都可以做到100或甚至1000行C。
9

檢出Twisted,一個用於網絡的Python引擎。 * Eve使用Stackless Python。內置對TCP,UDP,SSL/TLS,多播,Unix套接字,大量協議(包括HTTP,NNTP,IMAP,SSH,IRC,FTP等)的支持