为什么多处理池在增加进程时会花费更多时间

  • 本文关键字:进程 时间 增加 处理 python
  • 更新时间 :
  • 英文 :


我想添加一个名为result的列表,其中包含两个名为calculation和calculation2的函数的结果。为什么只有计算结果2。我想要两者的结果。

import multiprocessing
def calculation(numbers,result):
for index,number in enumerate(numbers):
result[index] = number*number
# print('inside_multiprocessing::',result)
def calculation2(numbers,result):
for index,number in enumerate(numbers):
result[index] = number*number*number
# print('inside_multiprocessing::',result)
if __name__=='__main__':
result = multiprocessing.Array('i',50)
p1 = multiprocessing.Process(target=calculation,args=([1,2,3,4,4,5,6,7,8,9],result))
p2 = multiprocessing.Process(target=calculation2,args=([1,2,3,4,4,5,6,7,8,9],result))
p1.start()
p2.start()
p1.join()
p2.join()
print('outside_multiprocessing::',result[:])

您的数组需要至少是列表中项目数的两倍大。你可能会发现这种方法很有用:

from multiprocessing import Process, Array

def calculation(numbers, result):
for index, number in enumerate(numbers):
result[index] = number*number

def calculation2(numbers, result):
for index, number in enumerate(numbers, len(numbers)):
result[index] = number*number*number

if __name__ == '__main__':
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = Array('i', len(nums)*2)
p = []
for t in [calculation, calculation2]:
p.append(Process(target=t, args=(nums, result)))
p[-1].start()
for p_ in p:
p_.join()
print(result[:])

输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

最新更新