我有一个耗时长度为300的循环。我想并行执行。
伪代码:
for t=0, 300 do begin
output_data[t] = function(input_data(t))
endfor
•每次迭代的函数()完全相同 •input_data(t))存储在文件
中是否可以将300次迭代划分为K个并行进程(其中k是CPU数)? 我找到了split_fot.pro但是如果我理解正确的话,那就是在同一个循环的第n个cicle中划分不同的进程。 我该怎么办?
谢谢!
答案 0 :(得分:0)
我的库中有一些例程可用于执行以下操作:
pool = obj_new('MG_Pool', n_processes=k)
x = indgen(300)
output_data = pool->map('my_function', x)
此处,my_function
需要接受参数i
,获取与索引I
相关联的数据,并对其应用function
。然后将结果放入output_data[i]
。
您可以使用pool
关键字指定要用于N_PROCESSES
对象的进程数,也可以自动使用您可用的核心数。
代码在my library,检查src/multiprocessing
目录。有关使用它的一些示例,请参阅examples/multiprocessing
目录。