python下多線程的思考
對于資源,加鎖是個重要的環(huán)節(jié)。因為python原生的list,dict等,都是not thread safe的。而Queue,是線程安全的,因此在滿足使用條件下,建議使用隊列
包中的常用方法:
Queue.qsize() 返回隊列的大小
Queue.empty() 如果隊列為空,返回True,反之False
Queue.full() 如果隊列滿了,返回True,反之False
Queue.full 與 maxsize 大小對應
Queue.get([block[, timeout]])獲取隊列,timeout等待時間
創(chuàng)建一個“隊列”對象
多線程示意圖:

進程:一個程序運行起來后,代碼+用到的資源 稱之為進程,它是操作系統(tǒng)分配資源的基本單元。不僅可以通過線程完成多任務,進程也是可以的
進程的狀態(tài)
工作中,任務數往往大于cpu的核數,即一定有一些任務正在執(zhí)行,而另外一些任務在等待cpu進行執(zhí)行,因此導致了有了不同的狀態(tài)
線程之間的操作是無序的
一個線程下面有一個主線程
線程:相當于打開一個瀏覽器
進程:相當于在瀏覽器里面打開多個窗口
實現多任務的手段(方式):
1.多線程
2.多進程
3.協(xié)程
什么是Scrapy框架
Scrapy一個開源和協(xié)作的框架是基于twisted框架開發(fā)而來,twisted是一個流行的事件驅動的python網絡框架。因此Scrapy使用了一種非阻塞(又名異步)的代碼來實現并發(fā)。是用純Python實現一個為了爬取網站數據、提取結構性數據而編寫的應用框架,用途非常廣泛。導入 from multiprocessing import Pool
創(chuàng)建一個進程池:pool = Pool()
pool.apply()? 同步的方法,執(zhí)行效率比較低
apply_async? 是一個異步方法,可以提高任務執(zhí)行的效率
func,對應的任務的函數名稱
args=() , 傳遞參數(元組)
kwds={} , 傳遞參數(字典)
迭代器
迭代是訪問集合元素的一種方式。迭代器是一個可以記住遍歷的位置的對象。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退
可迭代對象?我們已經知道可以對list、tuple、str等類型的數據使用for...in...的循環(huán)語法從其中依次拿到數據進行使用,我們把這樣的過程稱為遍歷,也叫迭代。。