Python成長筆記 - 基礎篇 (十)

本節內容
  1. 進程、與線程區別
  2. python GIL全局解釋器鎖
  3. 線程
    1. 語法
    2. join
    3. 線程鎖之Lock\Rlock\信號量
    4. 將線程變爲守護進程
    5. Event事件 
    6. queue隊列
    7. 生產者消費者模型
    8. Queue隊列
    9. 開發一個線程池
  1. 進程
    1. 語法
    2. 進程間通信
    3. 進程池    
 
ssh
 
ssh_sftp
 
 
 
 
SSH密鑰
RSH -非對稱密鑰驗證
 
公鑰:public key
私鑰: privat key
 
10.0.0.31 ----鏈接----> 10.0.0.41
私鑰 公鑰
 
10.0.0.31 生成密鑰對ssh-keygen
 
 
進程和線程
線程:(一堆指令)就是os操做系統去調度CPU操做運算的最小單位
進程:一堆資源的集合,不具有執行的屬性,要操做CPU,先必須建立一個線程。--->一個進程最少包含一個線程(主線程)才能執行。。例如qq就是一個進程,
 
線程四、同一個進程的不一樣線程之間能夠相互交流;兩個進程想交流了必須經過一箇中間代理
五、一個線程能夠控制和操做同一進程中的其餘線程;可是進程只能操做子進程
 
存儲速度: cpu>內存>文件
一個程序不能訪問另外一個程序:程序就是一個進程,兩個進程之間不可相互訪問
 
eg. :
一次性啓動50個線程,統一等最後的結果:
解:先建立一個臨時列表,把全部的結果添加進去,而後循環列表
import threading
import time
 
#1、直接調用
start_time =time.time()
t_obj = []
def run(n):
print("hello",n)
time.sleep(2)
 
for i in range(50):
t= threading.Thread(target=run, args=("t-%s"%i,))
t.start()
t_obj.append(t)
 
for t in t_obj:
t.join()
print("t-%s has finished..."%i)
 
print("cost time : ",time.time()-start_time)
print("well done!!")
 
 
 
 
threading.current_thread() #查看進程類型
threading.active_count()#查看活動的線程
 
守護進程(守護線程):依賴與主線程存活,主進程執行完畢,全部的守護線程也跟着結束,程序退出。
 
gil鎖
用戶鎖
 
遞歸鎖rlock:多級鎖防鎖死
 
 
Semaphore(信號量)
import threading,time
 
def run(n):
semaphore.acquire()
time.sleep(1)
print("run the thread: %s" %n)
semaphore.release()
 
if __name__ == "__main__":
semaphore = threading.BoundedSemaphore(5) #最多同時容許5個線程同時運行
for i in range(20):
t =threading.Thread(target=run,args=(i,))
t.start()
 
while threading.active_count() !=1 :
pass
else:
print("--- all threads done ---")
 
 
 
 
 
優勢:一、程序的解耦
二、提升效率
相關文章
相關標籤/搜索