Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python多处理通过迭代返回多个变量的平均值_Python_Multiprocessing - Fatal编程技术网

使用python多处理通过迭代返回多个变量的平均值

使用python多处理通过迭代返回多个变量的平均值,python,multiprocessing,Python,Multiprocessing,我想在多次迭代之后计算几个变量的平均值。我的函数创建随机数据,并从中计算变量(使用其他函数) 到目前为止,我已经: stuff1_list = [] stuff2_list = [] stuff3_list = [] for i in range(100): data = create_data(arg1, arg2) stuff1_list.append(calc_stuff1(data)) stuff2_list.append(calc_stuff2(data))

我想在多次迭代之后计算几个变量的平均值。我的函数创建随机数据,并从中计算变量(使用其他函数)

到目前为止,我已经:

stuff1_list = []
stuff2_list = []
stuff3_list = []
for i in range(100):
    data = create_data(arg1, arg2)
    stuff1_list.append(calc_stuff1(data))
    stuff2_list.append(calc_stuff2(data))
    stuff3_list.append(calc_stuff3(data))
mean1 = np.mean(stuff1_list)
mean2 = np.mean(stuff2_list)
mean3 = np.mean(stuff3_list)
我一直在试图找出如何使用多处理来实现这一点,但我对进程、队列、池等感到困惑。如何通过并行处理完成这项工作?

我的方法是:

def do_stuff():
材料清单=[]
对于范围(100)内的i:
数据=创建数据(arg1、arg2)
填充列表。追加(计算填充(数据))
打印(np.平均值(物料清单))
对于范围(3)中的i:
p=multiprocessing.Process(target=do_stuff,args=())
p、 开始()
我的方法是:

def do_stuff():
材料清单=[]
对于范围(100)内的i:
数据=创建数据(arg1、arg2)
填充列表。追加(计算填充(数据))
打印(np.平均值(物料清单))
对于范围(3)中的i:
p=multiprocessing.Process(target=do_stuff,args=())
p、 开始()

在“范围(3)内的i”中的数字3是否为磁芯数?为了澄清,我需要在每次迭代中生成新的数据,所以它应该在循环“范围(100)”内。3是您拥有的进程数量,它们可以在相同或不同的核心上运行。是否要在同一数据上运行所有例程?此实现分别为每个例程调用
create_data
!关于数据,这是随机数据,所以我为100次中的每一次创建新数据很重要。然后,我只为该数据计算一次变量。如果
create\u data
在每次调用时返回新数据,则应该可以。OK。只是我不明白如果
范围(100)
循环之外,如何调用
creata\u data
100次。我是否遗漏了与
多处理.Process
工作方式相关的内容?是否“for I in range(3):”中的数字3是核心数?为了澄清,我需要在每次迭代中生成新的数据,所以它应该在循环“范围(100)”内。3是您拥有的进程数量,它们可以在相同或不同的核心上运行。是否要在同一数据上运行所有例程?此实现分别为每个例程调用
create_data
!关于数据,这是随机数据,所以我为100次中的每一次创建新数据很重要。然后,我只为该数据计算一次变量。如果
create\u data
在每次调用时返回新数据,则应该可以。OK。只是我不明白如果
范围(100)
循环之外,如何调用
creata\u data
100次。我是否遗漏了与
多处理.Process
工作方式相关的内容?