需要的建议 - Python中的网络 - 一个好主意?

时间:2009-08-10 09:26:23

标签: python network-programming

我正在考虑使用Python而不是C / C ++ API编程我的应用程序的网络相关功能。网络的预期用途是在我的应用程序的两个实例之间传递文本消息,类似于通过网络尽可能频繁地传递玩家位置的游戏。

虽然python套接字模块看起来已经足够成熟,但我想检查python模块是否有限制,这在开发的后期阶段可能会出现问题。

您如何看待python套接字模块:

  1. 对于生产质量软件来说,它是否可靠且快速?
  2. 如果我的应用程序有任何已知的限制可能会有问题。除了常规客户端 - 服务器消息传递之外,还需要更复杂的网络吗?
  3. 提前致谢,

4 个答案:

答案 0 :(得分:9)

查看Twisted,一个用于网络的Python引擎。内置支持TCP,UDP,SSL / TLS,组播,Unix套接字,大量协议(包括HTTP,NNTP,IMAP,SSH,IRC,FTP等)

答案 1 :(得分:3)

Python是一种成熟的语言,几乎可以用C / C ++做任何事情(如果你真的想伤害自己,甚至可以直接访问内存)。

你会发现你可以在很短的时间内编写漂亮的代码,这段代码从一开始就是可读的,并且它将保持可读性(即使在一年之后返回,你仍会知道它的作用)

Python的缺点是你的代码会有点慢。 “有点”,如“对于某些情况可能太慢”。所以通常的方法是在Python中尽可能多地编写,因为它会使您的应用程序可维护。最终,您可能会遇到速度问题。这是考虑在C中重写应用程序的一部分的时候。

这种方法的主要优点是:

  1. 您已经有一个正在运行的应用程序将代码从Python转换为C比从头开始编写要简单得多。
  2. 您已经有一个正在运行的应用程序在将一小部分Python转换为C之后,您只需要测试那个小部分,然后就可以使用应用程序的其余部分(没有更改)来完成它。
  3. 您不需要预先付出代价。如果Python足够快,您将永远不必进行可选的优化。
  4. Python比C强大得多。每行Python都可以做到100行甚至1000行C.

答案 2 :(得分:1)

要回答#1,我知道除其他事项外,EVE Online(MMO)使用Python的变体作为其服务器代码。

答案 3 :(得分:1)

EVE在线使用的python是StacklessPython(http://www.stackless.com/),据我所知,他们使用它来实现如何通过使用tasklet和诸如此类的东西来实现线程。但是,由于python本身可以处理像MMO这样的东西,有4万人在线,我认为它可以做任何事情。

这个糟糕的答案并不是你问题的真正答案,而是先前的答案。

艾伦。