Python同期期货TypeError:zip参数1必须支持迭代

2024-04-28 10:00:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望使用多处理在1000个批处理中处理mongodb文档。但是,下面的代码片段给出了TypeError: zip argument #1 must support iteration

代码:

def documents_processing(skip):
    conn = get_connection()
    db = conn["db_name"]

    print("Process::{} -- db.Transactions.find(no_cursor_timeout=True).skip({}).limit(10000)".format(os.getpid(), skip))
    documents = db.Transactions.find(no_cursor_timeout=True).skip(skip).limit(10000)
    # Do some processing in mongodb


max_workers = 20


def skip_list():
    for i in range(0, 100000, 10000):
        yield [j for j in range(i, i + 10000, 1000)]


def main_f():
    try:
        with concurrent.futures.ProcessPoolExecutor(max_workers=max_workers) as executor:
            executor.map(documents_processing, skip_list)
    except Exception:
        print("exception:", traceback.format_exc())

main_f()

错误回溯:

^{pr2}$

如何修复此错误?谢谢。在


Tags: no代码indbmongodbdeffindconn
1条回答
网友
1楼 · 发布于 2024-04-28 10:00:05

调用skip_list函数返回生成器。在

目前,传递的是函数作为第二个参数,而不是iterable。在

executor.map(documents_processing, skip_list())

由于在每个进程中从n开始检索10k个文档,因此可以将skip_list声明为:

^{pr2}$

相关问题 更多 >