imap_unordered
时间: 2023-11-01 22:54:19 浏览: 158
unordered_map_
`imap_unordered` 是一个函数,它在 Python 的 `multiprocessing` 模块中提供。它用于并行地迭代一个可迭代对象,并返回一个迭代器,该迭代器按照任务完成的顺序生成结果,而不是按照任务开始的顺序。
具体来说,`imap_unordered` 函数接受一个函数和一个可迭代对象作为参数。该函数会被并行地应用于可迭代对象中的每个元素,并返回结果。生成的迭代器会按照任务完成的顺序生成结果。
与 `imap` 函数类似,`imap_unordered` 函数也是惰性的,它会立即返回一个迭代器对象,而不会等待所有任务完成。这意味着您可以在迭代器生成的同时处理结果。
需要注意的是,由于任务是并行执行的,因此生成的结果的顺序可能与可迭代对象中元素的顺序不一致。如果您对结果顺序有要求,应该使用 `imap` 函数。
以下是一个示例代码,展示了如何使用 `imap_unordered` 函数:
```python
import multiprocessing
def square(x):
return x*x
pool = multiprocessing.Pool()
results = pool.imap_unordered(square, range(10))
for result in results:
print(result)
```
在上面的示例中,我们定义了一个 `square` 函数,它将每个输入的平方作为输出。然后我们创建了一个 `multiprocessing.Pool` 对象,并使用 `imap_unordered` 函数将 `square` 函数应用于范围为 0 到 9 的整数。最后,我们使用生成的迭代器来迭代并打印结果。由于 `imap_unordered` 函数的特性,结果的顺序可能是随机的。
阅读全文