溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python已協程方式處理任務實現過程

發布時間:2020-10-04 12:51:05 來源:腳本之家 閱讀:168 作者:長不大的菜鳥 欄目:開發技術

這篇文章主要介紹了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是結束時間減去開始時間,就是最終所花時間。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女