python多執行緒間的資料簡單呼叫

2021-10-10 13:00:54 字數 1810 閱讀 1791

本人不喜歡一上來就定義一大堆全域性變數,因此經常通過呼叫類屬性的方法來實現多個文字之間變數共享。這麼做的問題就在於,專案複雜度提公升以後,我就再也找不見某些變數了,俗稱埋藏了無數隻bug。

痛定思痛後,決定在類的內部,設計兩個變數,乙個用來給外部函式呼叫(self.send),乙個用來接收外部函式給的資料(self.send),其實都是外部函式呼叫啦,畢竟類的內部只要self就可以引用了。

主線程(test1.py)中開啟兩個執行緒,這兩個執行緒分別執行不同檔案(test2.py/test3.py)下的兩個類。

**可以直接跑,在pycharm中新建乙個python專案,複製貼上這三段**,然後run test1就可以了。

test1.py

"""

這段**只是開啟兩個執行緒,在專案設計過程中,主線程還可以做其他的任務。

"""import threading

import test2

import test3

if __name__ == '__main__':

te = test2.test2()

ts = test3.test3()

threading.thread(target=te.main_func).start()

threading.thread(target=ts.func,args=(te,)).start()

test2.py

"""這個段**就單純定義乙個類,以及成員函式"""

class test2():

def __init__(self):

self.send =0

self.reci = 0

def send_func(self):

#每呼叫一次就+1

self.send += 1

return self.send

def reci_func(self,data):

#接收另乙個執行緒返回的值

self.reci = data

print("jj="+str(self.reci))

def main_func(self):

# 不斷判斷self.send的值

while 1:

if self.send == 10:

self.send = 0 # 歸零操作

test3.py

"""

在本文的情景下,這段**才是核心執行緒,在主線程中呼叫本段函式的func()

來實現變數值的變化

"""import time

class test3():

def __init__(self):

self.send =0

self.reci = 0

def func(self,t2):

"""t2是傳入的test2例項化的物件,在這個函式裡面,通過呼叫

test2自身的函式來修改test2的成員變數

"""while 1:

time.sleep(1)

self.reci = t2.send_func() *2

t2.reci_func(self.reci)

self.out_func() #test3的輸入函式

def out_func(self):

if self.reci >=10:

print("test3.reci = " + str(self.reci))

多執行緒間共享資料,簡單Demo

多執行緒間共享資料的問題 設計四個執行緒,其中兩個執行緒每次對data增加1,另外兩個執行緒每次對data減少1。從問題來看,很明顯涉及到了執行緒間通資料的共享,四個執行緒共享乙個data,共同操作乙個data。我們先把上面這個問題放在一邊,慢慢分析多個執行緒之間共享資料的一些情況,從最簡單開始,分...

python多執行緒事件 執行緒間的通訊

事件,就是多執行緒之間的通訊 import threading,time class boss threading.thread def run self print boss說 從現在開始我們就要996啦,歡呼吧 事件設定 print event.isset event.set event被set...

Python多執行緒的簡單使用

這主要介紹一下treading模組 最簡單的方法 tred threading.thread target start tred.start 開始執行緒 tred.join 等待執行緒介紹注意一定要寫target,要不然啟動的就不是執行緒。那麼如何自動讓執行緒終止呢?這裡我們可以自己寫乙個方法來繼承...