1. 程式人生 > >python之《執行緒與程序》

python之《執行緒與程序》

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

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

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

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

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

import threading
import time
def run(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()

    r_obj.append(t)
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()