python提供了兩個模組來實現多執行緒thread和threading(推薦),thread模組提供了基本的執行緒和鎖支援,threading提供的是更高階的完全的執行緒管理,且更方便操作。
在 python3 中不能再使用"thread" 模組。為了相容性,python3 將 thread 重新命名為 "_thread"。
from threading import thread # 匯入thread類,用它來建立執行緒
import time
def user01():
for i in range(3):
print("user01--do")
time.sleep(1)
def user02():
for i in range(3):
print("user02--do")
time.sleep(1)
if __name__ == "__main__":
t1 = thread(target=user01) # 建立子執行緒t1
t2 = thread(target=user02) # 建立子執行緒t2
t1.start() # 子執行緒t1開始執行
t2.start() # 子執行緒t2開始執行
for i in range(3): # 主線程在執行
print("main--do")
time.sleep(1)
## 執行結果:
user01--do
user02--do
main--do
user01--do
main--do
user02--do
user01--do
main--do
user02--do
注意:此時程式中有三個執行緒,分別是主線程,子執行緒t1,子執行緒t2。
thread(target=func_name, args=(func_parameter1, func_parametern))
target:目標方法,即執行緒要去執行的方法
args:目標方法的引數。是乙個元組,當只有乙個引數是要加","
threading.enumerate(),獲取當前程式中所有的執行緒,返回乙個列表
from threading import thread, enumerate
import time
def user01():
for i in range(3):
print("user01--do")
# time.sleep(1)
def user02():
for i in range(3):
print("user02--do")
# time.sleep(1)
if __name__ == "__main__":
t1 = thread(target=user01)
t2 = thread(target=user02)
t1.start()
t2.start()
print(enumerate())
## 執行結果:
user01--do
user01--do
user01--do
[<_mainthread(mainthread, started 7288)>, , ]
user02--do
user02--do
user02--do
在呼叫enumerate()之前,如果有子執行緒指定的方法執行完畢,則該子執行緒結束,那麼enumerate()方法返回的列表中不包含該子執行緒。
from threading import thread
import time
class mythread(thread):
def run(self):
for i in range(3):
print("user01--do")
time.sleep(1)
if __name__ == "__main__":
t1 = mythread()
t1.start()
for i in range(3):
print("main--do")
time.sleep(1)
## 執行結果:
user01--do
main--do
user01--do
main--do
user01--do
main--do
1.繼承thread類,重寫run方法
2.呼叫start()方法啟用執行緒,執行緒會執行run()方法裡面的**。
1.當用thread(target=func_name, args=(func_parameter1, func_parametern))方法建立執行緒時,當使用start()啟用執行緒時,執行緒實際上掉用的也是run方法。然後在run()裡面呼叫了func_name方法。
2.主線程結束程式就會結束。
python多工 執行緒
併發 指的是任務數多餘cpu核數,通過作業系統的各種任務排程演算法,實現用多個任務 一起 執行 實際上總有一些任務不在執行,因為切換任務的速度相當快,看上去一起執行而已 並行 指的是任務數小於等於cpu核數,即任務真的是一起執行的 執行緒python的thread模組是比較底層的模組,python的...
Python 多工 執行緒同步
高階程式設計技巧 學習筆記 1.1 實現兩個執行緒一問一答 class xiaoai threading.thread def init self super init name 小艾同學 def run self print f 在 print f 你猜現在幾點了?class tianmao th...
多工 執行緒
建立函式 建立執行緒物件,並制定函式 開啟執行緒 import threading import time defwork1 1.定義函式 for i in range 5 print 正在掃地 i time.sleep 1 defmain 測試執行緒的基本使用 2.建立執行緒物件 t1 threa...