多处理功能似乎根本不起作用
Multiprocessing functions doesn't seem to work at all
我只是想学习 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。在处理具有独立内存边界的多个处理器时,您需要以不同的方式思考。
查看 this answer 了解如何解决此问题。
我只是想学习 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。在处理具有独立内存边界的多个处理器时,您需要以不同的方式思考。
查看 this answer 了解如何解决此问题。