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

4

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

虽然Python的socket模块似乎足够成熟和可靠,但我想检查一下在开发后期是否可能会出现问题的限制。

您认为Python的socket模块怎么样:

  1. 它对于生产质量的软件来说可靠且足够快吗?
  2. 是否有任何已知的限制,如果我的应用程序需要更复杂的网络功能而不仅仅是常规的客户端-服务器消息传递,这些限制可能会成为问题?

谢谢提前!

保罗

4个回答

9

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


3

Python是一种成熟的语言,它几乎可以做C/C++所能做的一切(即使您真的想要直接访问内存)。

您会发现,您可以在很短的时间内编写出漂亮的代码,并且这些代码从一开始就易读,而且它们将保持可读性(即使您一年后回来,您仍然知道它的功能)。

Python的缺点是,您的代码会有些慢。 "有些"是指 "在某些情况下可能太慢了"。因此,通常的方法是尽可能多地使用Python编写代码,因为它将使您的应用程序易于维护。最终,您可能会遇到速度问题。那将是考虑在C中重写应用程序的一部分的时候。

这种方法的主要优点是:

  1. 您已经拥有一个运行中的应用程序。将代码从Python翻译成C比从头开始编写要简单得多。
  2. 您已经拥有一个运行中的应用程序。在将一小部分Python翻译为C之后,您只需测试该小部分,然后可以使用其余未更改的应用程序来执行它。
  3. 您不需要预先付出代价。如果Python对您来说足够快,您将永远不必进行可选的优化。
  4. Python比C强大得多。每行Python代码可以做与100甚至1000行C代码相同的事情。

1
回答问题1,我知道EVE Online(大型多人在线游戏)在其服务器代码中使用Python的变体。

1
EVE Online使用的Python是StacklessPython(http://www.stackless.com/),据我所知,他们使用它来实现通过使用任务和其他方式进行线程处理。但由于Python本身可以处理像在线40k人的MMO之类的东西,我认为它可以做任何事情。
这个回答不好,也不是对你问题的真正回答,而是对之前回答的补充。
艾伦。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接