【发布时间】:2021-12-27 19:15:02
【问题描述】:
我正在尝试使用多处理共享数组。我想创建两个函数,每个函数都使用一个通用数据集。但只有一个函数修改了数组。
这是我的代码:
import numpy as np
import multiprocessing as mp
import time
arr = mp.Array('f', np.array([1,2,3,4]))
def testfunc1(arr):
while True:
arr = np.concatenate((arr, np.array([0])))
print(arr)
time.sleep(2)
def testfunc2(arr):
while True:
arr[0] *= 2
time.sleep(2)
print(arr)
proc1 = mp.Process(target=testfunc1, args=(arr,))
proc2 = mp.Process(target=testfunc2, args=(arr,))
proc1.start()
proc2.start()
结果如下:
[1. 2. 3. 4. 0.]
[1. 2. 3. 4. 0. 0.]
<SynchronizedArray wrapper for <multiprocessing.sharedctypes.c_float_Array_4 object at 0x7fcd865bfdd0>>
<SynchronizedArray wrapper for <multiprocessing.sharedctypes.c_float_Array_4 object at 0x7fcd865bfdd0>>
[1. 2. 3. 4. 0. 0. 0.]
<SynchronizedArray wrapper for <multiprocessing.sharedctypes.c_float_Array_4 object at 0x7fcd865bfdd0>>
[1. 2. 3. 4. 0. 0. 0. 0.]
<SynchronizedArray wrapper for <multiprocessing.sharedctypes.c_float_Array_4 object at 0x7fcd865bfdd0>>
[1. 2. 3. 4. 0. 0. 0. 0. 0.]
testfunc2 似乎不起作用。我做错了什么?
【问题讨论】:
标签: python python-multiprocessing