Python中線程資源共享的問題

2021-08-10 05:45:06 字數 810 閱讀 9143

python中線程全域性變數是共享的,這一點與程序不同,在程序中所有程序之間的資源都是無關的,不共享的,所以在程序中使用程序之間的通訊機制,比如queue。

python執行緒中非全域性變數是不共享的,兩個執行緒即便是執行同一函式,但是在函式中的非全域性變數是不相關的,

from threading import thread

import threading, time

def test1():

g_num = 100

name = threading.current_thread().name

print('---執行緒的名字是%s' % name)

if name == 'thread-1':

g_num += 1

print()

else:

time.sleep(2)

print('---執行緒的名字是%s--g_num=%d' % (name, g_num))

p1 = thread(target=test1)

p1.start()

p2 = thread(target=test1)

p2.start()

上面這段**的執行結果是:

---執行緒的名字是thread-1

---執行緒的名字是thread-1--g_num=101

---執行緒的名字是thread-2

---執行緒的名字是thread-2--g_num=100

可以很清楚的看到執行緒1和2雖然都執行了test1(),但是非全域性變數的結果是互不干擾的。

Python實現程序資源共享

程序是cpu最小的資源分配的單位。程序之間的資源是不能共享的。但是執行緒之間的資源可以是共享的。下面簡單的介紹兩種方法實現程序之間資源的共享。1 queue 方法 usr bin envpython coding utf 8 from multiprocessing import process,q...

Java Java實現執行緒間的資源共享

實現runnable介面相比繼承thread類有如下好處 避免單繼承的侷限,乙個類可以同時實現多個介面 適合資源的共享.如下 public class mythread extends thread public static void main string args 執行效果 售票口二 買票 5...

程序的資源共享

程序是放到記憶體中的,程序中所有的計算過程都是需要在cpu處理的。當有多個程序都需要使用共享資源的時候就需要借助乙個中間過程 臨界區 臨界區的使用原則 空則讓進,忙則等待,等則有限,等則讓權 當共享資源沒有被使用的時候就將某個需要使用的程序放到臨界區中,在這段時間中只能是臨界區中的程序可以使用共享資...