無論是程序還是執行緒我們都可以迴圈開啟多條,對於什麼時候使用程序什麼時候使用執行緒這個問題上:答案就是,我們在遇到計算密集型問題時使用多程序,遇到io密集型問題時使用多執行緒。
io密集型問題:io密集型,涉及到網路、磁碟io的任務都是io密集型任務,這類任務的特點是cpu消耗很少,任務的大部分時間都在等待io操作完成(因為io的速度遠遠低於cpu和記憶體的速度)。對於io密集型任務,任務越多,cpu效率越高,但也有乙個限度。常見的大部分任務都是io密集型任務,比如web應用。io密集型任務執行期間,99%的時間都花在io上,花在cpu上的時間很少,因此,用執行速度極快的c語言替換用python這樣執行速度極低的指令碼語言,完全無法提公升執行效率。對於io密集型任務,最合適的語言就是開發效率最高(**量最少)的語言,指令碼語言是首選,c語言最差。
# coding:utf-8import threading,time
lock = threading.lock()
ls = [i for i in range(10)] #[1,2,3,4,5,6,7,8,9]
# def getvalue():
# global ls
# if len(ls):
# a = ls[-1]
# print('執行緒:%s 刪除 %s'%(threading.current_thread().name,a))
# time.sleep(1)
# ls.remove(a)
def get():
global ls
lock.acquire() # 開始上同步鎖
try:
if len(ls):
a = ls[-1]
print('執行緒:%s 刪除 %s' % (threading.current_thread().name, a))
time.sleep(1)
ls.remove(a)
finally:
lock.release() # 釋放同步鎖
if __name__=='__main__':
while true:
# 開啟多執行緒的方法,我們可以使用迴圈來開啟多執行緒,及多程序也是如此。
t =
for i in range(1,4):
t1 = threading.thread(target=get,name='thread-%s'%i)
t1.start()
# 最後我們迴圈來等待他們執行結束在執行下面的內容。
for item in t:
item.join()
if len(ls) == 0:
break
print(ls)
多執行緒與多程序
程序 程序是程式的一次執行,在傳統的計算機中,程序既是基本的分配單元,也是基本的執行單元。執行緒 執行緒是可執行的實體單元,它是處理機排程的基本單位。由於執行緒在同一位址空間,因此建立和撤銷執行緒的開銷小,執行緒間的通訊效率高,切換迅速。在多處理機系統中,對程序的個數有所限制,但對執行緒的個數不存在...
多執行緒與多程序
魚還是熊掌 多程序多執行緒的選擇 關於多程序和多執行緒,教科書上最經典的一句話是 程序是資源分配的最小單位,執行緒是cpu排程的最小單位 這句話應付考試基本上夠了,但如果在工作中遇到類似的選擇問題,那就沒有這麼簡單了,選的不好,會讓你深受其害。經常在網路上看到有的xdjm問 多程序好還是多執行緒好?...
多程序與多執行緒
import threading建立乙個執行緒,指向的函式,不接收引數的情況 t threading.thread target 函式名 建立乙個執行緒,指向的函式,收引數的情況 t threading.thread target 函式名,args 實參1,執行緒物件名.start 生命週期 我們的...