列出 pool.startmap_async() 的推导语法



看一个例子:

https://www.machinelearningplus.com/python/parallel-processing-python/

有一个要并行化的函数定义:

# Step 1: Redefine, to accept `i`, the iteration number
def howmany_within_range2(i, row, minimum, maximum):
    """Returns how many numbers lie within `maximum` and `minimum` in a given `row`"""
    count = 0
    for n in row:
        if minimum <= n <= maximum:
            count = count + 1
    return (i, count)

starmap_async示例如下:

results = pool.starmap_async(howmany_within_range2, [(i, row, 4, 8) for i, row in enumerate(data)]).get()

我对这里的语法有点困惑,尤其是"i"参数以及这个枚举语法的工作原理。

此外,apply_asyncy(( 示例使用 pool.join(( 语句,但 map_async(( 语句不使用?

稍微

分解一下,

data = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]
arguments = [(i, row, 4, 8) for i, row in enumerate(data)]
print(arguments)

输出(格式化(

[
  (0, [1, 2, 3], 4, 8),
  (1, [4, 5, 6], 4, 8),
  (2, [7, 8, 9], 4, 8),
]

哪些是howmany_within_range2将执行的元组,即

howmany_within_range2(0, [1, 2, 3], 4, 8)
howmany_within_range2(1, [4, 5, 6], 4, 8)
howmany_within_range2(2, [7, 8, 9], 4, 8)

但并行。

enumerate在这里用于轻松访问data列表中行的行索引;否则,您只会得到一堆结果,而没有一种简单的方法将它们与原始数据行相关联。

相关内容

  • 没有找到相关文章

最新更新