importmultiprocessing
from multiprocessing.managers import
basemanager
import
threading
#鎖可以通過global也可以在process中傳無所謂
share_lock =threading.lock()
#定義乙個要共享例項化物件的類
class
test():
def__init__
(self):
self.test_list = ["
start flag"]
deftest_function(self,arg):
defprint_test_list(self):
for item in
self.test_list:
print(f"")
defsub_process(process_name,obj):
global
share_lock
share_lock.acquire()
obj.test_function(f""
) share_lock.release()
obj.print_test_list()
pass
defmain_process():
#如果是想註冊open方法這樣操作
#manager = basemanager()
## 一定要在start前註冊,不然就註冊無效
#manager.register('open', open)
#manager.start()
#obj = manager.open("1.txt","a")
#為了更加直接我們直接以乙個test類的例項化物件來演示
manager =basemanager()
#一定要在start前註冊,不然就註冊無效
manager.register('
test
', test)
manager.start()
obj =manager.test()
process_list =
#建立程序1
process_name = "
process 1
"tmp_process = multiprocessing.process(target=sub_process,args=(process_name,obj))
#建立程序2
process_name = "
process 2
"tmp_process = multiprocessing.process(target=sub_process, args=(process_name,obj))
#啟動所有程序
for process in
process_list:
process.start()
for process in
process_list:
process.join()
if__name__ == "
__main__":
main_process()
python 全域性變數
應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...
Python 全域性變數
應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...
python全域性變數
python中global關鍵字主要作用是宣告變數的作用域。在c語言中,由於變數一定是先宣告,後使用,所以我們可以清楚的知道,現在使用的變數是全域性還是區域性,比如 cpp view plain copy inta 5 void test void void test1 void void main...