一、生產者消費者模型 二、協程 1.協程參考資料: http://python.jobble.com/86481/ http://python.jobble.com/87310/ https://segmentfault.com/a/1190000009781688 2.迭代器參考資料 可迭代(it ...
一、生產者消費者模型
import multiprocessing from time import ctime def consumer(input_q): print("Into consumer:",ctime()) while True: #處理項 item = input_q.get() print("pull",item,"out of q")#此處替換為有用的工作 input_q.task_done()#發出信號通知任務完成 print("Out of consumer:",ctime()) #此句未執行,因為q.join()收集到四個task_done()信號後,主進程啟動 def producer(sequence,output_q): print("Into producer:",ctime()) for item in sequence: output_q.put(item) print("put",item,"into_q") print("Out of producer:",ctime()) #建立進程 if __name__ == "__main__": q=multiprocessing.JoinableQueue() #運行消費者進程 cons_p = multiprocessing.Process(target=consumer,args=(q,)) cons_p.daemon = True cons_p.start() #生產多個項,sequence代表要發送給消費者的項序列 #在實踐中,這可能是生成器的輸出或通過一些其他方式生產出來的 sequence = [1,2,3,4] producer(sequence,q) #等待所有項被處理 q.join()
二、協程
1.協程參考資料:
http://python.jobble.com/86481/
http://python.jobble.com/87310/
https://segmentfault.com/a/1190000009781688
2.迭代器參考資料
可迭代(iterable):直接作用於for迴圈變數
迭代器(Iterator):不但可以作用於for迴圈,還可以被next調用
3.關係:list是一個典型的可迭代對象,但是不是一個迭代器,因為list不可以被next調用
4.判斷標準:通過isinstance來判斷某個變數是否是一個實例,判斷是否可以迭代
from collections import Iterable,Iterator l = [i for i in range(5)] #可迭代 print(isinstance(l,Iterable))#判斷是否可迭代 print(isinstance(l,Iterator))#判斷是否是一個迭代器 s_iter = iter(l)#將其轉換為可以迭代的和迭代器 print(isinstance(s_iter,Iterable))#判斷是否可迭代 print(isinstance(s_iter,Iterator))#判斷是否是一個迭代器
三、源碼
d26_2_consumer_and_producer_model.py
d27_1_iterable_and_iterator_and_their_transform.py
https://github.com/ruigege66/Python_learning/blob/master/d26_2_consumer_and_producer_model.py
https://github.com/ruigege66/Python_learning/blob/master/d27_1_iterable_and_iterator_and_their_transform.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料