我正在使用multiprocessor.Pool()模块来加速“令人尴尬的并行”循环。其实我有一个嵌套的循环,现在用multiprocessor.Pool加快内循环。例如,在不并行化循环的情况下,我的代码如下:
outer_array=[random_array1]
inner_array=[random_array2]
output=[empty_array]
for i in outer_array:
for j in inner_array:
output[j][i]=full_func(j,i)
使用并行化:
import multiprocessing
from functools import partial
outer_array=[random_array1]
inner_array=[random_array2]
output=[empty_array]
for i in outer_array:
partial_func=partial(full_func,arg=i)
pool=multiprocessing.Pool()
output[:][i]=pool.map(partial_func,inner_array)
pool.close()
我的主要问题是这是否正确,我应该在循环内包含multiprocessing.Pool(),或者是否应该在循环外创建池,即:
pool=multiprocessing.Pool()
for i in outer_array:
partial_func=partial(full_func,arg=i)
output[:][i]=pool.map(partial_func,inner_array)
另外,我不知道我是否应该包括线“pool.close()”在第二实施例以上的每个循环的结束; 这样做的好处是什么?
谢谢!
理想情况下,你应该调用Pool()
构造函数恰好一次-
不超过一遍。创建工作进程时,有大量的开销,你付出每次调用时的成本Pool()
。由单一的创建过程Pool()
调用呆在身边!当他们完成您赋予他们在程序的一部分工作,他们坚持围绕,等待
更多的 工作要做。
至于Pool.close()
,你应该调用时-只有当-
你永远不会提交更多的工作的Pool
实例。所以,Pool.close()
当你的主要程序的并行部分完成通常称为。然后,当已经分配所有的工作已经完成了工作进程将终止。
这也是极好的实践呼叫Pool.join()
等待工作进程终止。除了其他原因,往往是在并行代码(例外发生在上下文中只隐约涉及到你的主程序是做)报告异常没有很好的办法,并Pool.join()
提供了一个同步点,可报告,发生在工作进程有些例外,你否则永远不会看到。
玩得开心 :-)
在学习Java 8 streams和lambas时,我尝试用streams替换以下嵌套for循环: 循环迭代“ProvidedService”对象的列表,对于每个对象,循环遍历“Desk”对象的列表属性,并将“Id”字段提取到列表中。 我使用streams生成了以下代码: 这是正确/最佳的方法吗?或者有没有一种方法可以在没有第二个嵌套流的情况下实现这一点?
本文向大家介绍在Python的while循环中使用else以及循环嵌套的用法,包括了在Python的while循环中使用else以及循环嵌套的用法的使用技巧和注意事项,需要的朋友参考一下 循环使用 else 语句 在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况
我用For创建了一个嵌套循环,这是程序代码和输出,然后我尝试了同时循环,得到了不同的结果 对于 虽然 请引导我。。谢谢
在Haskell中执行嵌套循环有两种明显的“惯用”方法:使用列表monad或使用 : 在1s内运行。这个库使用得不多,也远不是惯用的,那么,获得快速恒定空间二维计算的惯用方法是什么呢?(注意,这不是REPA的情况,因为我想在网格上执行任意IO操作。)
我在下面的代码中使用了嵌套的for循环,并且我有一些条件来中断内部的for循环,这提高了代码的性能。 现在,如何使用 Java 8 流来执行相同的逻辑?我想出了下面的代码: 在这里,我不能在java流中使用< code>break语句,所以我使用了< code>return语句,但它仍然运行内部循环,因为它不会中断内部循环,所以性能没有提高。
问题内容: 在学习Java 8流和lambas时,我尝试用流替换以下嵌套的for循环: 该循环迭代“ ProvidedService”对象的列表,并针对每个对象循环访问“ Desk”对象的list属性,并将“ Id”字段提取到列表中。 我想出了以下使用stream的代码: 这是正确/最佳的方式吗?还是有没有第二个嵌套流的方法来执行此操作? 问题答案: 我可能会这样写: