如何对序列中的每个项目执行一个不 return 并行的操作?
How do I execute an action which doesn't return anything in parallel for every item in a sequence?
这段代码对序列的每个元素并行应用一个动作:
import multiprocessing
...
pool = multiprocessing.Pool(2)
print(pool.map(action, sequence))
如何在忽略结果的同时运行一个动作(或者如果它没有return任何结果)?我是否需要像下面的代码那样执行它(它有效但对我来说不正确)还是有更优雅的方法?
import multiprocessing
...
pool = multiprocessing.Pool(2)
list(pool.map(action, sequence))) # Don't assign the result to a variable, since
# it will be just a list of `None`.
换句话说,我该如何并行执行此操作:
for c in sequence:
action(c)
丢弃结果的唯一标准解决方案是分配给一次性 _
名称:
_ = pool.map(action, sequence)
除此之外,我看到的一个技巧是将调用隐藏在另一个函数中,这实际上对您隐藏了结果,即:
def applypool(p, action, sequence):
list(p.map(action, sequence))
这段代码对序列的每个元素并行应用一个动作:
import multiprocessing
...
pool = multiprocessing.Pool(2)
print(pool.map(action, sequence))
如何在忽略结果的同时运行一个动作(或者如果它没有return任何结果)?我是否需要像下面的代码那样执行它(它有效但对我来说不正确)还是有更优雅的方法?
import multiprocessing
...
pool = multiprocessing.Pool(2)
list(pool.map(action, sequence))) # Don't assign the result to a variable, since
# it will be just a list of `None`.
换句话说,我该如何并行执行此操作:
for c in sequence:
action(c)
丢弃结果的唯一标准解决方案是分配给一次性 _
名称:
_ = pool.map(action, sequence)
除此之外,我看到的一个技巧是将调用隐藏在另一个函数中,这实际上对您隐藏了结果,即:
def applypool(p, action, sequence):
list(p.map(action, sequence))