我只是想用python学习多处理。我写了两个基本函数,但显然它们不起作用。这些可能有什么问题?
startingList = []
evenNumbers = []
unEvenNumbers = []
def fill_list(number):
for x in range(1, number):
startingList.append(x)
def test():
for num in startingList:
if num % 2 == 0:
evenNumbers.append(num)
else:
unEvenNumbers.append(num)
if __name__ == '__main__':
start = time.perf_counter()
p1 = multiprocessing.Process(target=fill_list, args=(17,))
p2 = multiprocessing.Process(target=test)
p1.start()
p2.start()
p1.join()
p2.join()
end = time.perf_counter()
print(startingList, "n", evenNumbers, "n", unEvenNumbers)
这里的问题是您试图在不同的进程中写入startingList,但startingList不是您期望的startingList。在处理具有独立内存边界的多个处理器时,您需要有一些不同的想法。
看看这个关于如何解决这个问题的答案。