運行此代碼時,它僅在末尾打印出一個空白數(shù)組:[]那么為什么它不附加值a或值b呢?import multiprocessing as muarray_values=[]def a(array): array.append('a')def b(array): array.append('b')def runInParallel(*fns): z=0 while z<6: if __name__=='__main__': proc = [] for fn in fns: p = mu.Process(target=fn,args=(array_values,)) p.start() proc.append(p) for p in proc: p.join() z+=1runInParallel(a,b)print(array_values)期望的函數(shù)最終輸出:['a','b','a','b','a','b','a','b','a','b','a','b']提前致謝!
1 回答

墨色風雨
TA貢獻1853條經(jīng)驗 獲得超6個贊
它不說話的原因是因為multiprocessing
不使用共享內(nèi)存。
您可以使用以下代碼來獲取所需的輸出(它使用threading
共享內(nèi)存):
import threading
array_values = []
def a(array):
? ? array.append('a')
def b(array):
? ? array.append('b')
def runInParallel(*fns):
? ? z = 0
? ? while z < 6:
? ? ? ? if __name__ == '__main__':
? ? ? ? ? ? proc = []
? ? ? ? ? ? for fn in fns:
? ? ? ? ? ? ? ? p = threading.Thread(target=fn, args=(array_values,))
? ? ? ? ? ? ? ? p.start()
? ? ? ? ? ? ? ? proc.append(p)
? ? ? ? ? ? for p in proc:
? ? ? ? ? ? ? ? p.join()
? ? ? ? z += 1
runInParallel(a, b)
print(array_values)
添加回答
舉報
0/150
提交
取消