Python 使用多处理、生成器函数和抓取URL时出现问题

Python 使用多处理、生成器函数和抓取URL时出现问题,python,multiprocessing,Python,Multiprocessing,我正在尝试使用多处理快速抓取一堆URL,但结果似乎没有上传到我的数据库。这是我的密码: def解析(url): page=requests.get(url,headers=headers) soup=BeautifulSoup(page.text,'lxml') MongoDBCollection.插入一个(汤) def gen_func(): 对于otherMongoDBCollection中的文档: 收益文档['URL'] def main(): 池=池(64) pool.imap_无序(p

我正在尝试使用多处理快速抓取一堆URL,但结果似乎没有上传到我的数据库。这是我的密码:

def解析(url):
page=requests.get(url,headers=headers)
soup=BeautifulSoup(page.text,'lxml')
MongoDBCollection.插入一个(汤)
def gen_func():
对于otherMongoDBCollection中的文档:
收益文档['URL']
def main():
池=池(64)
pool.imap_无序(parse,gen_func())
pool.terminate()
pool.join()
如果uuu name uuu==“uuuu main”:#必需的逻辑表达式
main()

Pool.imap\u unreded方法不仅在工作完成后立即返回。它的返回值是一个迭代器(因此是“i”前缀),您需要迭代所有的返回值,以知道整个批次已经处理。如果您希望在主进程继续运行之前等待所有工作完成,那么您可能希望使用
map
方法(正如您在注释中提到的)


或者,您可以将对
terminate()
的调用替换为对
close()
的调用。这不会缩短池的工作(只是防止提交任何新作业)。然后,
join()
调用将被阻止,直到所有工作人员都找到为止。

您是否有一个串行案例正在工作?我将
imap\u unordered
更改为
map
,似乎解决了我的问题