同步、异步、阻塞、非阻塞

同步请求

"""
同步 与 异步 指的是提交任务的方式 ?
同步指的是 提交任务后就在原地等待 必须等待任务执行完毕 才能继续执行
异步 提交任务后就不管啦 可以继续执行 异步效率高

"""
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密集型 可以使用多线程
计算密集型 必须是多进程




 


posted @ 2019-01-25 15:14  不沉之月  阅读(133)  评论(0编辑  收藏  举报