之前线程池是通过操作系统切换线程,现在是程序自己控制,比操作系统切换效率要高

服务端

from gevent import monkey;monkey.patch_all()
import gevent
from socket import * def communicate(conn):
''' 通信功能 '''
while True:
try:
data = conn.recv(1024)
if not data:break
conn.send(data.upper()) except ConnectionResetError:
break conn.close() def server(ip,port):
''' 负责建立连接 accept''' server = socket(AF_INET, SOCK_STREAM)
server.bind((ip,port))
server.listen(5) while True:
conn,addr = server.accept()
c = gevent.spawn(communicate,conn) server.close() if __name__ == "__main__":
g = gevent.spawn(server,'127.0.0.1', 8080)
g.join()

客户端给服务端发送500个并发量,会看到一直不停的收消息

from socket import *
from threading import Thread
from threading import current_thread def client():
client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8080)) while True:
client.send(("%s say helo" % current_thread().getName()).encode("utf-8"))
data = client.recv(1024)
print(data.decode("utf-8")) client.close() if __name__ == "__main__":
for i in range(500):
t = Thread(target=client,)
t.start()

最新文章

  1. CSS浏览器兼容性与解析问题终极归纳
  2. Print Common Nodes in Two Binary Search Trees
  3. iOS开发系列通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开
  4. 《TCP/IP详解 卷一》读书笔记-----TCP数据流
  5. Webstrom快捷键大全
  6. 【BZOJ】【4034】【HAOI2015】T2
  7. Storm的容错性
  8. oracle的to_number、to_char、to_date用法
  9. Unity 3D 文件导入出错误解决方法以及unity圣典离线版下载地址
  10. AOP Aspect Oriented Programming
  11. hdu 5363Key Set
  12. 猎豹上市(猎豹的广告收入中有70%来自BAT三家公司,总收入中有58%来自BAT)
  13. ubuntu 安装ruby rails
  14. rsyslog 配置
  15. Linode和DigitalOcean lnmp一键安装包哪个好?
  16. iPhone应用中加入评分功能
  17. PAT1124:Raffle for Weibo Followers
  18. 故障公告:docker swarm集群“群龙无首”造成部分站点无法访问
  19. Python入门 (二)
  20. 【原创】Python第一章

热门文章

  1. 详解python编译器和解释器的区别
  2. document.writeln绑定数据 --点击跳转添加样式
  3. 《剑指offer》算法题第二天
  4. Springboot入门实战, 使用@Value
  5. Android的SQLite基本操作
  6. unittest详解(二) 跳过用例的执行(skip)
  7. JavaWeb_响应和请求数据包
  8. hibernate 一对多单向注解配置(实现级联操作 )
  9. legend3---lavarel常用artisan命令操作
  10. 搜狗输入法弹窗搜狐新闻的处理 以及sogoucloud.exe的处理