python协程 无能为力_python已协程方式处理任务
#從genent中導入monky模塊①
from gevent import monkey
#把程序變成協程的方式運行②
monkey.patch_all()
import gevent,requests,time
#導入requests和time
start = time.time()
#記錄程序開始時間
url_list = ['https://www.baidu.com/',
'https://www.sina.com.cn/',
'http://www.sohu.com/',
'https://www.qq.com/',
'https://www.163.com/',
'http://www.iqiyi.com/',
'https://www.tmall.com/',
'http://www.ifeng.com/']
#把8個網站封裝成列表
def get_data(url):
r = requests.get(url)
# 用requests.get()函數爬取網站
print(url, time.time()-start,r.status_code)
task_list=[]
# 創建一個空列表
for url in url_list:
# 用gevent里面的spawn函數創建任務 get_data是方法名,url是參數③
task=gevent.spawn(get_data,url)
# 將創建的任務添加到task_list④
task_list.append(task)
#執行任務列表中的所有任務⑤
gevent.joinall(task_list)
end = time.time()
#記錄程序結束時間
print(end-start)
#end-start是結束時間減去開始時間,就是最終所花時間。
使用隊列,代碼如下:
#從genent中導入monky模塊①
from gevent import monkey
#把程序變成協程的方式運行②
monkey.patch_all()
import gevent,requests,time
#從gevent庫里導入queue模塊
from gevent.queue import Queue
#導入requests和time
start = time.time()
#記錄程序開始時間
url_list = ['https://www.baidu.com/',
'https://www.sina.com.cn/',
'http://www.sohu.com/',
'https://www.qq.com/',
'https://www.163.com/',
'http://www.iqiyi.com/',
'https://www.tmall.com/',
'http://www.ifeng.com/']
#把8個網站封裝成列表
#創建隊列對象,并賦值給work。
work=Queue()
for url in url_list:
# 用put_nowait()函數可以把網址都放進隊列里。
work.put_nowait(url)
def get_data():
# 當隊列不是空的時候,就執行下面的程序。
while not work.empty():
# 用get_nowait()函數可以把隊列里的網址都取出。
url=work.get_nowait()
r = requests.get(url)
# 用requests.get()函數爬取網站 qsize隊列長度
print(url, work.qsize(),r.status_code)
task_list=[]
# 創建一個空列表
# 創建了2個爬蟲
for x in range(2):
# 用gevent里面的spawn函數創建任務 get_data是方法名
task=gevent.spawn(get_data)
# 將創建的任務添加到task_list④
task_list.append(task)
#執行任務列表中的所有任務⑤
gevent.joinall(task_list)
end = time.time()
#記錄程序結束時間
print(end-start)
#end-start是結束時間減去開始時間,就是最終所花時間。
總結
以上是生活随笔為你收集整理的python协程 无能为力_python已协程方式处理任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蝴蝶优化算法_算法|FFT基础及各种常数
- 下一篇: perl语言入门第七版中文_网站编程语言