23 多工執行緒(一)

2021-10-08 05:13:28 字數 3191 閱讀 7579

2. 主線程和子執行緒的執行關係

3. 檢視執行緒數量

4. 執行緒間的通訊(多執行緒共享全域性變數)

呼叫模組import threading,利用該模組中的threading.thread()方法建立多執行緒

使得案例中,singe()與dance()函式可以同時執行

import threading

import time

defsinge()

:for i in

range(3

):print

('正在唱歌....'

) time.sleep(1)

defdance()

:for i in

range(3

):print

('正在跳舞....'

) time.sleep(1)

defmain()

: t1 = threading.thread(target=singe)

t2 = threading.thread(target=dance)

t1.start(

) t2.start(

)if __name__ ==

'__main__'

: main(

)

import threading

class

main

(threading.thread)

:#重新定義run()方法,覆蓋父類中的run()方法

defrun

(self)

:for i in

range(5

):print

(i)if __name__ ==

'__main__'

:# 例項化

m = main(

)# 建立和啟動子執行緒

m.start(

)

import threading

defdemo()

:#子執行緒

for i in

range(5

):print

('hello world'

) time.sleep(1)

if __name__ ==

'__main__'

:#主線程

t = threading.thread(target=demo)

#非正真建立子執行緒,只是例項化物件

# 守護執行緒 不會等待子執行緒結束

#t.setdaemon(true) # 當1被輸出後,程式整個程式結束

t.start(

)# 建立和啟動執行緒都是通過t.start()主線程會等待子執行緒結束之後 主線程在結束

# join() 等待子執行緒結束之後,主線程才繼續執行

#t.join() 結果:輸出5個『hello world後,再輸出1』

print(1

)

# lst = ['a','b','c']

## for index,i in enumerate(lst):

enumerate()方法會遍歷出兩個值,分別是索引值下標,索引值

## print(i,index)

# # print(type(i))--

----

----

----

----

----

----

----

----

----

----

-import threading

import time

defdemo1()

:for i in

range(5

):print

('demo1--%d'

%i) time.sleep(1)

defdemo2()

:for i in

range(10

):print

('demo2--%d'

% i)

time.sleep(1)

defmain()

: t1 = threading.thread(target=demo1,name =

'demo1'

) t2 = threading.thread(target=demo2,name =

'demo2'

) t1.start(

) t2.start(

)while

true

:print

(threading.

enumerate()

)iflen(threading.

enumerate()

)<=1:

break

time.sleep(1)

if __name__ ==

'__main__'

: main(

)

import threading

import time

# 執行緒間是共享的全域性變數,程序不共享全域性變數

num =

100# num = [11,22] 列表一樣可以

defdemo1

(nums)

:global num

num +=

1# print('demo1--%s'% str(num))

defdemo2()

:#print('demo2--%s' % str(num))

print

(num)

defmain()

: t1 = threading.thread(target = demo1,args=(33

,)) t2 = threading.thread(target = demo2)

t1.start(

) time.sleep(1)

# 保證demo1先執行

t2.start(

)print

('main-num=%s'

% num)

輸出結果:

demo2列印出101

主線程列印出main-num=

101

多工 執行緒

建立函式 建立執行緒物件,並制定函式 開啟執行緒 import threading import time defwork1 1.定義函式 for i in range 5 print 正在掃地 i time.sleep 1 defmain 測試執行緒的基本使用 2.建立執行緒物件 t1 threa...

多工 執行緒

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

多工 執行緒

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