高效的python聊天

2024-06-02 21:17:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在写一个单播聊天服务器模型,流程如下:

  • 发送者向聊天服务器发送消息,在消息中服务器还指定消息接收者id
  • 聊天服务器将根据收件人id将消息路由到正确的客户端

我使用python标准库asyncore实现了聊天服务器模型。我发现一旦客户机连接到服务器,CPU就会上升(1%对24%)。我认为性能受到handle_write函数循环的限制。在

有没有更好的(例如,更有效的)框架来满足我的聊天服务器需求?在

提前谢谢


Tags: 模型服务器id消息客户端路由标准客户机
2条回答

我刚刚从一个web上读到,讨论了不同pythonweb服务器之间的效率(Link)。在

我想我会使用gevent,因为它看起来非常有效。在

当然,我们需要实际的代码来调试这个问题。但你主要问的是:

Is there a better (e.g. more efficient) framework to accomplish my chat implementation?

是的。人们普遍认为asyncore很糟糕。它既难用又效率低。它在Windows上尤其糟糕,因为select在Windows上尤其糟糕。在

所以,是的,使用不同的框架可能会让事情变得更好。在

不幸的是,SO问题不是获得框架建议的好地方,但是我可以抛出一个常见的怀疑列表:twistedmonoclegeventeventlettulip。在

或者,如果您不担心可扩展到几十个客户机,只关心小规模的性能,那么每个客户机使用一个线程(甚至两个线程,一个用于读,一个用于写)和阻塞I/O非常简单。在

最后,如果您一直在使用python3.x,那么3.4很有可能会有一个新的改进的异步I/O模块,它比asyncore更高效、更易于使用(而且它几乎肯定是基于tulip)的。所以…最好的解决办法可能是买台时光机,再往前走几个月。(或者,如果您是一个将来搜索此答案的读者,请查看IPC下的标准库,猜测哪个模块是新的改进的异步I/O模块。)

相关问题 更多 >