如何对序列中的每个项目执行一个不 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))