专栏首页数据云团并发篇-python非阻塞套接字-1

并发篇-python非阻塞套接字-1

非阻塞套接字到底带来了什么?

非阻塞套接字在accept或recv的时候不会发生阻塞,要么成功,

要么失败抛出BlockingIOError异常

使用非阻塞套接字实现并发

>并发是什么?

在一个时间段,完成某件事

整体思路

> 吃满 CPU!

> 宁可用 While True,也不要阻塞发呆!

> 只要资源没到,就先做其别的事!

> 将代码顺序重排,避开阻塞!

非阻塞套接字如何实现并发服务端?

配合try语句,将代码顺序重排,避开阻塞

# 第一层循环只负责生成对等连接套接字

>>>While True :

# 保留已经生成的对等连接套接字

>>>connection_list.append(conn)

# 把已经生成的对等连接套接字都处理一遍

>>>for connection in connection_list:

# 成功处理完一个对等连接套接字,就移出一个

>>>connection_list.remove(connection)

>普通套接字实现的服务端有什么缺陷吗?

有,一次只能服务一个客户端!

>这种缺陷是如何造成的?

accept阻塞:当没有套接字连接请求过来的时候会一直等待着

recv阻塞:当连接的这个客户端没有发数据过来的时候,也会一直等待着

非阻塞套接字——并发服务多个客户端

本文分享自微信公众号 - 数据云团(SmartData)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 并发篇-python非阻塞套接字

    >在Python中,可以使用socket.setblocking(0)将套接字设置为非阻塞。

    小团子
  • 并发篇-python套接字

    小团子
  • 并发篇-python非阻塞套接字-3

    >>>selector = selectors.DefaultSelector()

    小团子
  • 日常运维管理(二)

    监控io性能 : 有时候发现系统cpu和内存均有剩余,但是负载却很高,使用vmstat发现b列和wa列负载很高,要是想更详细的查看磁盘状态,那我们就用到了今天所...

    老七Linux
  • Linux 优化 | 我终于要对运维小哥下手了

    之前学习 Linux 命令的时候有学到 man 的使用,还有它的进阶版本 info 他可以更详细的查询命令手册

    咸鱼学Python
  • 『教程』来自小程序开发者的实例教程第二期

    最近全国各地很多城市都出现了高温天气,极乐蜀黍温馨提醒,高温天气小心热感冒,各位程序猿们这样的天气空调冷饮西瓜和电脑键盘代码更配哟~ 这周继续为大家带来的是来自...

    极乐君
  • 深入内核:监听器的工作原理与故障诊断分析

    熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 在Oracle的官方文档《Oracle Database PerformanceT...

    数据和云
  • 文本词语挖掘

    |导语 现在社交网络和视频网站发展都非常迅猛,参与人数非常多,每日UGC(用户原创内容)量非常可观。也因此爆炸性新闻和流行词语也频频出现。不同的社交圈内,由于...

    用户2519815
  • 如何规划基于Docker的微服务?

    用微服务器替代整体应用程序,或者建立新的应用程序,是开发团队日益增长的考虑因素,这些开发团队希望提高敏捷性,迭代速度更快,并跟上市场变化。通过在不同团队之间提供...

    静一
  • php 7 版本对于可变变量更严格.

    这是为什么呢? 原因在于php 7 把 $$arr 当成一个变量了, 加上数组定位, 也就是null.

    Tuesday

扫码关注云+社区

领取腾讯云代金券