python已協(xié)程方式處理任務實現(xiàn)過程
更新時間:2019年12月27日 14:39:47 作者:長不大的菜鳥
這篇文章主要介紹了python已協(xié)程方式處理任務實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
這篇文章主要介紹了python已協(xié)程方式處理任務實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
#從genent中導入monky模塊① from gevent import monkey #把程序變成協(xié)程的方式運行② 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個網(wǎng)站封裝成列表 def get_data(url): r = requests.get(url) # 用requests.get()函數(shù)爬取網(wǎng)站 print(url, time.time()-start,r.status_code) task_list=[] # 創(chuàng)建一個空列表 for url in url_list: # 用gevent里面的spawn函數(shù)創(chuàng)建任務 get_data是方法名,url是參數(shù)③ task=gevent.spawn(get_data,url) # 將創(chuàng)建的任務添加到task_list④ task_list.append(task) #執(zhí)行任務列表中的所有任務⑤ gevent.joinall(task_list) end = time.time() #記錄程序結束時間 print(end-start) #end-start是結束時間減去開始時間,就是最終所花時間。
使用隊列,代碼如下:
#從genent中導入monky模塊①
from gevent import monkey
#把程序變成協(xié)程的方式運行②
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個網(wǎng)站封裝成列表
#創(chuàng)建隊列對象,并賦值給work。
work=Queue()
for url in url_list:
# 用put_nowait()函數(shù)可以把網(wǎng)址都放進隊列里。
work.put_nowait(url)
def get_data():
# 當隊列不是空的時候,就執(zhí)行下面的程序。
while not work.empty():
# 用get_nowait()函數(shù)可以把隊列里的網(wǎng)址都取出。
url=work.get_nowait()
r = requests.get(url)
# 用requests.get()函數(shù)爬取網(wǎng)站 qsize隊列長度
print(url, work.qsize(),r.status_code)
task_list=[]
# 創(chuàng)建一個空列表
# 創(chuàng)建了2個爬蟲
for x in range(2):
# 用gevent里面的spawn函數(shù)創(chuàng)建任務 get_data是方法名
task=gevent.spawn(get_data)
# 將創(chuàng)建的任務添加到task_list④
task_list.append(task)
#執(zhí)行任務列表中的所有任務⑤
gevent.joinall(task_list)
end = time.time()
#記錄程序結束時間
print(end-start)
#end-start是結束時間減去開始時間,就是最終所花時間。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
全網(wǎng)最細 Python 格式化輸出用法講解(推薦)
這篇文章主要介紹了全網(wǎng)最細 Python 格式化輸出用法講解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
python3應用windows api對后臺程序窗口及桌面截圖并保存的方法
今天小編就為大家分享一篇python3應用windows api對后臺程序窗口及桌面截圖并保存的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
pandas創(chuàng)建DataFrame的7種方法小結
這篇文章主要介紹了pandas創(chuàng)建DataFrame的7種方法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
Python微信企業(yè)號開發(fā)之回調(diào)模式接收微信端客戶端發(fā)送消息及被動返回消息示例
這篇文章主要介紹了Python微信企業(yè)號開發(fā)之回調(diào)模式接收微信端客戶端發(fā)送消息及被動返回消息的方法,涉及Python微信企業(yè)號回調(diào)模式消息響應機制相關操作技巧,需要的朋友可以參考下2017-08-08
python實現(xiàn)Android與windows局域網(wǎng)文件夾同步
這篇文章主要給大家詳細介紹了python實現(xiàn)Android與windows局域網(wǎng)文件夾同步,文中有詳細的代碼示例和圖文介紹,具有一定的參考價值,需要的朋友可以參考下2023-09-09
使用Pandas的ExcelWriter操作excel的方法
這篇文章主要介紹了使用Pandas的ExcelWriter操作excel的方法,ExcelWriter這個插件有個坑,就是已經(jīng)設置好的格式是無法更改的,因此,由pandas轉成excel的時候,必須將格式清除,尤其是表頭的格式需要大家多多注意,本文結合示例代碼講解的非常詳細,需要的朋友參考下吧2023-11-11

