多執行緒與多程序

2022-08-24 08:45:12 字數 1388 閱讀 1650

無論是程序還是執行緒我們都可以迴圈開啟多條,對於什麼時候使用程序什麼時候使用執行緒這個問題上:答案就是,我們在遇到計算密集型問題時使用多程序,遇到io密集型問題時使用多執行緒。

io密集型問題:io密集型,涉及到網路、磁碟io的任務都是io密集型任務,這類任務的特點是cpu消耗很少,任務的大部分時間都在等待io操作完成(因為io的速度遠遠低於cpu和記憶體的速度)。對於io密集型任務,任務越多,cpu效率越高,但也有乙個限度。常見的大部分任務都是io密集型任務,比如web應用。io密集型任務執行期間,99%的時間都花在io上,花在cpu上的時間很少,因此,用執行速度極快的c語言替換用python這樣執行速度極低的指令碼語言,完全無法提公升執行效率。對於io密集型任務,最合適的語言就是開發效率最高(**量最少)的語言,指令碼語言是首選,c語言最差。

# coding:utf-8

import 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 生命週期 我們的...