我正在尝试为每个列表创建一个进程并运行功能。该函数会将数据写入公共资源。但是,由于赛车,我无法获得正确的结果吗? (idk)。
这是我的代码:
import multiprocessing
from multiprocessing import Manager
a = [1, 2, 3, 4]
chunks = [a[i::2] for i in range(2)]
def find_neighbor(list, b, i):
n = []
for i in range(len(list)):
ad = []
for j in range(len(a)):
if (list[i] + a[j]) % 2 == 1:
ad.append(a[j])
n.append(ad)
b[i] = n
if __name__ == "__main__":
b = Manager().dict()
jobs = []
for i in range(2):
p = multiprocessing.Process(target=find_neighbor, args=(chunks[i], b, i))
jobs.append(p)
p.start()
for p in jobs:
p.join()
print(b)
我得到的结果是
{1: [[1, 3], [1, 3]]}
两个进程中只有一个成功写入数据。我期望的是
{0:[[2, 4], [2, 4]],1: [[1, 3], [1, 3]]}