Hike News
Hike News

Python模塊-協程(yield,greenlet,gevent)

Preface: 不管是線程(threading)或是進程(multiprocessing)都為一種搶占資源(競爭式)的型式執行程序 資源消耗大,且CPU切換耗時 Introduction: 協程為單線程,因此不存在CPU線程之間的切換,效率高 協成為單線程,不存在GIL鎖,且數據取用相對安全 協程為單線程,併發次數幾近無限次,適合用於高併發處理

Continue Reading →

Python模塊-multiprocessing多進程

Preface: Python中同時間一個進程只能有一個線程通過GIL交給其中一個CPU執行 同時間要完成多任務能透過創建多進程(multiprocessing)交給不同CPU執行 進程: 程序是未運行的EXE檔:其還沒運行之前,無法調度系統的資源(內存、設備如滑鼠鍵盤等) 進程是運行起來的程序檔案:其能調度系統資源,稱為進程 操作系統分配資源的基本單位 Introduction: multiprocessing是Python中多進程的管理模塊 其使用方法與多線程(threading)模塊類似,只是環境不同而已 創建進程所耗費的資源較創建線程大

Continue Reading →

Python模塊-Queue隊列

Introduction: queue是python中的標準庫,俗稱隊列,可直接import使用 隊列(queue)為一種數據結構,用於存儲數據(類似列表及字典) 列表及字典不適合用於多線程中使用,在多個線程中,數據是共享的,進行數據交換的時候,不能夠保證數據的安全性和一致性,我們希望多個線程不要執行同一個任務,但使用列表或是字典就容易發生不同線程取到同一組數據或是執行同一個任務的詬病 隊列可以完美解決線程間的數據交換,保證線程間數據的安全性和一致性

Continue Reading →