共計(jì) 911 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
在 Python 中,多線程共享全局變量可以使用以下幾種方式實(shí)現(xiàn):
- 使用全局變量:在多個(gè)線程中直接使用全局變量。但是需要注意,多個(gè)線程同時(shí)修改全局變量可能會(huì)導(dǎo)致數(shù)據(jù)競爭和不確定的結(jié)果。
import threading
def thread_func():
global shared_variable
# 使用 shared_variable
# 創(chuàng)建多個(gè)線程
threads = []
for _ in range(10):
t = threading.Thread(target=thread_func)
threads.append(t)
t.start()
# 等待所有線程結(jié)束
for t in threads:
t.join()
- 使用鎖(Lock):使用鎖確保同一時(shí)間只有一個(gè)線程能夠修改全局變量。
import threading
shared_variable = 0
lock = threading.Lock()
def thread_func():
global shared_variable
lock.acquire()
try:
# 修改 shared_variable
finally:
lock.release()
# 創(chuàng)建多個(gè)線程
threads = []
for _ in range(10):
t = threading.Thread(target=thread_func)
threads.append(t)
t.start()
# 等待所有線程結(jié)束
for t in threads:
t.join()
- 使用線程局部變量(Thread-local variables):每個(gè)線程都有自己的變量副本,不會(huì)共享。
import threading
thread_local = threading.local()
def thread_func():
# 使用 thread_local.variable
# 設(shè)置每個(gè)線程的變量副本
for _ in range(10):
thread_local.variable = 0
t = threading.Thread(target=thread_func)
t.start()
# 等待所有線程結(jié)束
for t in threads:
t.join()
需要根據(jù)具體的需求選擇適合的方法來實(shí)現(xiàn)多線程共享全局變量。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!
正文完