多工 執行緒

2021-08-21 04:09:10 字數 2791 閱讀 9149

建立函式

建立執行緒物件,並制定函式

開啟執行緒

import threading

import time

defwork1

():# 1.定義函式

for i in range(5):

print('正在掃地----', i)

time.sleep(1)

defmain

():"""測試執行緒的基本使用"""

# 2.建立執行緒物件

t1 = threading.thread(target=work1) # 注意點:傳遞給 target 的是函式名,不要寫函式名後寫小括號

# 3.開啟執行緒。呼叫 start 的時候執行緒才會真正的開啟

t1.start()

if __name__ == '__main__':

main()

定義乙個類繼承 thread

類裡面提供 run 方法

建立自定義執行緒類的物件

呼叫 start 開啟執行緒,並自動執行 run 方法

import time

import threading

class

mythread

(threading.thread):

# 1. 定義乙個類繼承 thread

defrun

(self):

# 2. 類裡面提供 run 方法

for i in range(5):

print('正在掃地---', self.name)

time.sleep(1)

defmain

():"""測試自定義執行緒類"""

t1 = mythread() # 3. 建立自定義執行緒類的物件

t1.start() # 4.呼叫 start 開啟執行緒,並自動執行 run 方法

print(t1)

if __name__ == '__main__':

main()

多執行緒之間,使用全域性變數傳遞引數和函式之間使用全域性變數傳遞引數,用法一致

**示例

import threading

import time

defwork1

():global num

num = 100

# 執行緒1 修改全域性變數

print('work1---num=', num)

defwork2

():# 執行緒2 可以獲取 執行緒1 修改的結果

print('work2----,num=', num)

num = 0

defmain

():"""測試執行緒間使用全域性變數共享資料"""

t1 = threading.thread(target=work1)

t1.start()

time.sleep(0.5)

t2 = threading.thread(target=work2)

t2.start()

if __name__ == '__main__':

main()

import threading

import time

defwork1

(tmp):

# 函式的引數要和執行緒的 args 元素一一對應

print('work1---tmp=', tmp)

defwork2

(tmp):

# 執行緒2 可以獲取 執行緒1 修改的結果

print('work2----,tmp=', tmp)

defmain

():"""測試執行緒間使用傳參的方式共享資料"""

ls = # 執行緒間使用引數共享資料,必須使用可變型別的資料

t1 = threading.thread(target=work1, args=(ls,)) # 給執行緒傳參,使用 args 傳遞乙個元組

t1.start()

time.sleep(0.5)

t2 = threading.thread(target=work2, args=(ls,))

t2.start()

if __name__ == '__main__':

main()

執行緒同步指的是多執行緒之間互相協同,互相配合

互斥鎖是實現執行緒同步的一種方案,多執行緒之間共享一把鎖,這樣在針對同乙份資料操作的時候,可以有效的保證資料的安全

實現步驟:

# 建立鎖

mutex = threading.lock()

# 鎖定

mutex.acquire()

# 釋放

mutex.release()

**示例
import threading

import time

defwork1

():for i in range(200):

print('正在掃地~~', i)

defwork2

():for i in range(200):

print('正在搬磚~~', i)

defmain

(): t1 = threading.thread(target=work1)

t1.start()

t2 = threading.thread(target=work2)

t2.start()

if __name__ == '__main__':

main()

多工 執行緒

簡單地說,就是作業系統可以同時執行多個任務。實現多工有多種方式,執行緒 程序 協程。可以簡單理解為同一程序中有多個計數器,每個執行緒的執行時間不確定,而每個程序的時間片相等,執行緒是作業系統排程執行的最小單位.import threadingt1 threading.thread target fu...

多工 執行緒

什麼叫 多工 呢?簡單地說,就是作業系統可以同時執行多個任務。執行緒 1.使用threading模組 import threading defsing pass defdance pass defmain t1 threading.thread target sing t2 threading.th...

多工 執行緒

coding utf 8 from time import sleep defsing for i in range 3 print 正在唱歌.d i sleep 1 defdance for i in range 3 print 正在跳舞.d i sleep 1 if name main sing...