python之《執行緒與程序》

2022-07-27 21:57:15 字數 2112 閱讀 4687

多執行緒的應用場景 不適用cpu操作密集型任務, 適合io操作密集型任務

同一程序中的資料是互通的,因為python多執行緒是假多執行緒,我們要用到多核就需要開多個程序來實現,但是壞處是資料不能互通

執行緒:是作業系統最小的排程單位,是一串指令的集合

程序:eg:qq要以乙個整體的形式暴露給作業系統管理,裡面包含對各種資源的呼叫,記憶體對各種資源管理的集合叫做程序

程序操作cpu必須先建立乙個執行緒,只有執行緒才能操作cpu

所一在同一程序中的執行緒是共享同一片記憶體空間的,但是兩個執行緒不能在同一塊空間裡運作

主線程和子執行緒執行是並行的

import

threading

import

time

defrun(name):

print('

in the %s

' %name)

time.sleep(2)

首先我們設定乙個函式我們開啟兩個執行緒

t2 = threading.thread(target=run,args=('t2'

,))t1 = threading.thread(target=run,args=('t1'

,))t1.start()

t2.start()

你就會看到 並行的結果了,可是出現了乙個問題 我們向要在程序結束後使用其結果該怎麼辦呢?

我們可以使用join哦

star_time =time.time()

r_obj =

for i in range(50):

t = threading.thread(target=run, args=('

t %s

' %i, ))

t.setdaemon(true)

#把子執行緒設定成守護執行緒

t.start()

for i in

r_obj:

i.join()

可以看到我們把每乙個程序丟進了陣列,來是他們結束那麼後面我們就可以達到效果了

順便提一下我們還有乙個使用類的方法來開多程序哦

#

class mythraed(threading.thread):

#def __init__(self,name):

#super(mythraed, self).__init__()

#self.name = name##

def run(self):

#print('run the %s',self.name)

#time.sleep(2)

#t1 = mythraed('t1')

#t2 = mythraed('t2')

#t1.start()

#t2.start()

注意 python的執行緒是呼叫作業系統的源生執行緒,python在一時間內只能在一核中執行

如果你是2.x記得加鎖哦不然會出現差錯

local = threading.local()  #

加鎖首先生成例項

defrun(name):

global

num local.acquire() #上鎖

num += 1local.release() #解鎖

print('

in the %s

' % name)

2.程序(multiprocessing)

同理程序也和執行緒一樣的開啟方式,也是start一下 也可以join

for i in range(10):

p = multiprocessing.process(target=run, args=('

liu%s

' %i,))

p.start()

需要注意的是,每個程序都有乙個父程序衍生出來,所以 檢視程序的pid可以用os來檢視,

如果你用pycharm寫了乙個程式那麼這個程式的父親程序pid就是pychram在電腦中的pid

檢視父親程序用

os.getppid()

檢視當前程序的pid用

os.getpid()

python之執行緒與多程序

概念 如果把電腦cpu比作工廠,與常見工廠不同,在這個工廠中,單位時間下 只執行乙個車間開工,程序就像乙個車間而,車間內的工人相互合作,共同完成車間的任務,這些工人就是執行緒。乙個程序至少有乙個執行緒。簡單總結 單核cpu單位時間內只能執行乙個程序,而乙個程序至少由乙個執行緒構成,使用多執行緒和多程...

python執行緒與程序

直接呼叫 import threading,time def run n print running n time.sleep 2 t1 threading.thread target run,args test1 生成乙個執行緒例項 t2 threading.thread target run,a...

python 程序與執行緒

執行緒是作業系統能夠進行運算排程的最小單位,它包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不 同的任務。程序 qq要以乙個整體的形式暴露給作業系統功能管理,裡面包含對各種資源的呼叫。記憶體對各種資源管理的集合 就...