執行緒間通訊 使用全域性變數

2021-08-20 22:04:22 字數 787 閱讀 9963

import threading

from time import sleep

s=none

#臨界資源

defbar

(): print("呼叫foo")

global s

s='天王'

deffoo

(): print('foo等口令')

sleep(2)

print('foo收到%s'%s)

deffun

():#執行緒bar1被這個fun覆蓋掉了,執行緒之間有同步和互斥

sleep(1)

print('內奸出現')

global s

s='小雞'

t1=threading.thread(name='bar',target=bar)

t2=threading.thread(name="foo",target=foo)

t3=threading.thread(name="foo",target=foo)

t1.start()

t2.start()

t3.start()

t1.join()

t2.join()

t3.join()

執行緒鎖 :

lock=threading.lock() #建立鎖物件
lock.acquire() #上鎖
lock.release() #解鎖

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

修改全域性變數一定需要加global嗎?num 100lis 11 22 def demo global num num 100def demo1 33 未修改指向 只是修改了指向空間的資料 不用加global defdemo2 global lis lis lis 44 修改了指向 要加上glob...

7 多執行緒 全域性變數 共享全域性變數

多執行緒 全域性變數 共享全域性變數 多執行緒可以對全域性變數進行修改,修改後的結果會影響下乙個執行緒 程序不可以共享全域性變數,子程序是複製父程序的全域性變數,修改後互不影響 from threading import thread import time,random g num 100 def...

執行緒的全域性變數

from threading import thread import time g num 100 defwork1 global g num for i in range 3 g num 1 print in work1,g num is d g num defwork2 global g nu...