我希望使用多处理在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}$如何修复此错误?谢谢。在
调用
skip_list
函数返回生成器。在目前,传递的是函数作为第二个参数,而不是iterable。在
由于在每个进程中从n开始检索10k个文档,因此可以将
^{pr2}$skip_list
声明为:相关问题 更多 >
编程相关推荐