#使用多线程:在协程中集成阻塞io
import asyncio
from concurrent.futures import ThreadPoolExecutor
import socket
from urllib.parse import urlparse def get_url(url):
#通过socket请求html
url = urlparse(url)
host = url.netloc
path = url.path
if path == "":
path = "/" #建立socket连接
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# client.setblocking(False)
client.connect((host, 80)) #阻塞不会消耗cpu #不停的询问连接是否建立好, 需要while循环不停的去检查状态
#做计算任务或者再次发起其他的连接请求 client.send("GET {} HTTP/1.1\r\nHost:{}\r\nConnection:close\r\n\r\n".format(path, host).encode("utf8")) data = b""
while True:
d = client.recv(1024)
if d:
data += d
else:
break data = data.decode("utf8")
html_data = data.split("\r\n\r\n")[1]
print(html_data)
client.close() if __name__ == "__main__":
import time
start_time = time.time()
loop = asyncio.get_event_loop()
executor = ThreadPoolExecutor(3)
tasks = []
for url in range(20):
url = "http://shop.projectsedu.com/goods/{}/".format(url)
task = loop.run_in_executor(executor, get_url, url)
tasks.append(task)
loop.run_until_complete(asyncio.wait(tasks))
print("last time:{}".format(time.time()-start_time))

最新文章

  1. Oracle存储过程由例子到理论
  2. Tomcat报java.lang.OutOfMemoryError: Java heap space错误停止运行如何解决
  3. 自学 PHP,如何不走弯路?
  4. Python-装饰器详解
  5. Java for LeetCode 145 Binary Tree Postorder Traversal
  6. windows电脑变成wifi热点命令
  7. BZOJ3028 食物 (生成函数)
  8. cmd启动tomcat
  9. [转]在 Mac OS X 终端里使用 Solarized 配色方案
  10. 编程好帮手----CodeSmith Generator Studio
  11. 高效 Java Web 开发框架 JessMA v3.2.3 beta-1 发布
  12. CodeForces 213B Numbers
  13. hdu 5524 二叉树找规律,二进制相关
  14. 用Eclipse生成JPA元模型
  15. linux 文件名称前后缀操作函数----取目录函数dir、取文件名称函数notdir、取后缀函数suffix、取前缀basename、加后缀函数addsuffix、加前缀addprefix、连接函数join
  16. Day9 基于TCP的套接字和基于UDP的套接字
  17. 基于Keil软件的MCU环境搭建
  18. HTTP协议(二)之确保web安全的HTTPS
  19. 学习笔记TF015:加载图像、图像格式、图像操作、颜色
  20. dotnet core 编程规范

热门文章

  1. 自测之Lesson5:标准I/O
  2. Java 集合框架之 Map
  3. python学习笔记04:安装pip
  4. TCP系列37—Keep Alive—1、TCP存活检测
  5. 《Debian标准教程》摘录2则
  6. .net Mvc4 View—布局页与分部页
  7. 【alpha】Scrum站立会议第2次....10.17
  8. CSS设计指南之一 HTML标记与文档结构
  9. Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"
  10. ASP.NET MVC下使用文件上传和IIS7下的默认设置限制了上传大小的方法