As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center作为指导。
                            
                        
                    
                
                                6年前关闭。
            
                    
我现在正在编写一个单播聊天服务器模型,流程如下:


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


我使用python标准库asyncore实现了聊天服务器模型。我发现,一旦客户端连接到服务器,CPU就会启动(1%vs 24%)。我相信性能受到handle_write函数循环的限制。

是否有更好(例如更有效)的框架来满足我的聊天服务器要求?

提前致谢

最佳答案

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


  是否有更好的(例如效率更高的)框架来完成我的聊天实施?


是。公认asyncore很烂。它既难以使用又效率低下。在Windows上尤其糟糕,因为select在Windows上尤其糟糕。

因此,是的,使用其他框架可能会使情况变得更好。

不幸的是,SO问题不是获取框架建议的好地方,但是我可以列出一些常见的可疑对象:twistedmonoclegeventeventlettulip

或者,如果您不担心可扩展到几十个以上的客户端,则只需考虑小规模的性能,即每个客户端使用一个线程(甚至两个线程,一个用于读取,一个用于写入)并阻止I / O非常简单。

最后,如果您紧跟Python 3.x的最新知识,那么3.4很有可能会拥有一个经过改进的新的异步I / O模块,该模块比asyncore更加有效和易于使用(并且它将几乎可以肯定是基于tulip)。因此...最好的解决方案可能是获得一台时光机并前进几个月。 (或者,如果您将来是寻找此答案的读者,请查看IPC下的标准库,并猜测哪个模块是经过改进的异步I / O模块。)

07-24 09:45
查看更多