栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用Python进行客户端服务器编程?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用Python进行客户端服务器编程?

为每个连接生成新线程是一个 非常糟糕的 设计选择。如果您遇到许多人脉关系会怎样?

实际上,使用线程等待网络IO是不值得的。您的程序真的变得复杂,而且因为在线程中等待网络不会使您 等待得更快,* 所以绝对 没有任何好处
。在这种情况下,您只会因使用线程而迷失方向。
*

以下文字来自python文档:

只有一种方法可以使程序在单个处理器上“一次完成一个以上的事情”。多线程编程是最简单,最流行的方法,但是还有另一种非常不同的技术,它使您几乎拥有多线程的所有优点,而无需实际使用多个线程。仅当您的程序在很大程度上受I
/ O约束时,这才是切实可行的。如果您的程序受处理器限制,那么抢占式预定线程可能正是您真正需要的。但是,网络服务器很少受处理器限制。

并且如果是处理器绑定服务器的情况。您可以随时离开另一个进程/线程来处理处理器。继续:

如果您的操作系统在其I / O库中支持select系统调用(几乎所有方法都支持),则可以使用它同时处理多个通信通道;否则,您将无法使用它。在“ I /
O”发生在“后台”时进行其他工作。尽管这种策略看似奇怪且复杂,尤其是乍一看,但它在很多方面都比多线程编程更易于理解和控制。

因此,不要使用线程,而要使用非阻塞输入/输出:将套接字收集在列表中,并使用带有select.select的事件循环来知道哪个套接字具有要读取的数据。在一个线程中执行该操作。

您可以选择像twisted这样的python异步网络框架来为您执行此操作。这样可以省去很多麻烦。Twisted的代码已经改进了很多年,涵盖了一些需要花费一些时间才能掌握的特殊情况。

编辑
:任何现有的异步IO库(如Twisted)都是python代码。您可以自己编写它,但是已经为您编写了。我不明白为什么您不使用那些库中的一个来编写自己的
最差 代码,因为您是一个初学者。Networing IO很难做到正确。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号