【问题标题】:Suggestion Needed - Networking in Python - A good idea?需要建议 - Python 中的网络 - 一个好主意?
【发布时间】:2010-11-18 05:48:43
【问题描述】:
我正在考虑用 Python 而不是 C/C++ API 对我的应用程序的网络相关功能进行编程。网络的预期用途是在我的应用程序的两个实例之间传递文本消息,类似于通过网络尽可能频繁地传递玩家位置的游戏。
虽然python socket模块看起来足够成熟,但我想检查一下python模块是否存在限制,这在开发的后期可能会出现问题。
你觉得python socket模块怎么样:
- 对于生产质量软件来说,它是否足够可靠和快速?
- 是否存在任何已知限制,如果我的应用程序存在问题。除了常规的客户端-服务器消息传递之外,还需要更复杂的网络?
提前致谢,
保罗
【问题讨论】:
标签:
python
network-programming
【解决方案1】:
查看Twisted,这是一个用于网络的 Python 引擎。内置支持 TCP、UDP、SSL/TLS、多播、Unix 套接字、大量协议(包括 HTTP、NNTP、IMAP、SSH、IRC、FTP 等)
【解决方案2】:
Python 是一门成熟的语言,几乎可以做任何您在 C/C++ 中可以做的事情(如果您真的想伤害自己,甚至可以直接访问内存)。
你会发现你可以在很短的时间里写出漂亮的代码,这段代码从一开始就可读并且它会保持可读(即使一年后你仍然会知道它做了什么) .
Python 的缺点是 您的 代码会有些慢。 “在某些情况下可能太慢”中的“有点”。所以通常的方法是尽可能多地用 Python 编写,因为它会使你的应用程序可维护。最终,您可能会遇到速度问题。是时候考虑用 C 重写应用程序的一部分了。
这种方法的主要优点是:
- 您已经有一个正在运行的应用程序。将代码从 Python 翻译成 C 语言比从头开始编写要简单得多。
- 您已经有一个正在运行的应用程序。将一小部分 Python 翻译成 C 后,您只需测试该小部分,然后就可以使用应用的其余部分(未更改)来完成。
- 您无需预先支付任何费用。如果 Python 对您来说足够快,您将永远不必进行可选优化。
- Python 比 C 强大得多。每行 Python 都可以与 100 甚至 1000 行 C 一样。
【解决方案3】:
EVE 在线使用的 python 是 StacklessPython (http://www.stackless.com/),据我了解,他们使用它来通过使用 tasklet 等实现线程。但是由于 python 本身可以处理像 4 万人在线的 MMO 这样的事情,我认为它可以做任何事情。
这个不好的答案并不是你问题的真正答案,而是对先前答案的补充。
艾伦。
【解决方案4】:
要回答 #1,我知道除其他外,EVE Online(MMO)使用 Python 的变体作为其服务器代码。