python生成器/yield協程/gevent寫簡單的圖片下載器功能示例
阿新 • • 發佈:2020-01-09
本文例項講述了python生成器/yield協程/gevent寫簡單的圖片下載器功能。分享給大家供大家參考,具體如下:
1、生成器:
'''第二種生成器''' # 函式只有有yield存在就是生成器 def test(i): while True: i += 1 res = yield i print(res) i += 1 return res def main(): t = test(1) # 建立生成器物件 print(next(t)) # next第一次執行從上到下,yield是終點 print(next(t)) print(t.send(5)) if __name__ == '__main__': main()
執行結果:
2
None
4
5
6
2、yield協程demo:
def run1(): while True: print('run1____') yield def run2(): while True: print('run2____') yield def main(): while True: next(run1()) next(run2()) if __name__ == '__main__': main()
3、gevent寫簡單的下載圖片
import gevent import requests,lxml # from gevent import monkey # monkey.patch_all() def get_pic(url,list): headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/68.0.3440.106 Safari/537.36' } response = requests.get(url,headers=headers) with open('./pic/'+str(list.pop(0)) + '.png','wb') as f: f.write(response.content) def get_pic_name_list(): def main(): get_pic_name_list() list = [x for x in range(9999)] gevent.joinall([ gevent.spawn(get_pic,'http://pic8.iqiyipic.com/image/20181008/eb/af/v_116880780_m_601_m11_180_236.jpg',list),gevent.spawn(get_pic,'http://pic6.iqiyipic.com/image/20181004/a2/2b/v_112874372_m_601_m15_180_236.jpg',list) ]) if __name__ == '__main__': main()
更多關於Python相關內容可檢視本站專題:《Python資料結構與演算法教程》、《Python Socket程式設計技巧總結》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》及《Python入門與進階經典教程》
希望本文所述對大家Python程式設計有所幫助。