同步、异步、阻塞、非阻塞
同步请求
"""
同步 与 异步 指的是提交任务的方式 ?
同步指的是 提交任务后就在原地等待 必须等待任务执行完毕 才能继续执行
异步 提交任务后就不管啦 可以继续执行 异步效率高
"""
import requests
def parse_data(resp):
print("parse data:",len(resp))
urls = ["https://www.python.org","https://www.qq.com","https://www.taobao.com"]
def get_page(url):
print("get : ",url)
res = requests.get(url)
return res.text
for i in urls:
res = get_page(i)
parse_data(res)
多线程
"""
同步 与 异步 指的是提交任务的方式 ?
同步指的是 提交任务后就在原地等待 必须等待任务执行完毕 才能继续执行
异步 提交任务后就不管啦 可以继续执行 异步效率高
"""
from threading import Thread
import requests
def parse_data(resp):
print("parse data:",len(resp))
urls = ["https://www.python.org","https://www.qq.com","https://www.taobao.com"]
def get_page(url,call_back):
print("get : ",url)
res = requests.get(url)
# return res.text
call_back(res.text)
ts = []
for i in urls:
t = Thread(target=get_page,args=(i,parse_data))
t.start()
ts.append(t)
for t in ts:
t.join()
print("over")
阻塞、非阻塞、同步、异步
阻塞与非阻塞指的应用程序的状态
request.get()
1.阻塞
2.就绪
3.运行
就绪和阻塞给用户的感觉是都会卡住
阻塞是指程序遇到了IO操作 无法继续执行
对于IO操作较多的应用程序 称之为IO密集型,与之相反的计算密集型
对io操作 可以使用多线程 或是多进程,到底用哪个?
对于cpython而言
io密集型 可以使用多线程
计算密集型 必须是多进程