据我所知,map
和imap
之间的区别在于map
等待所有请求完成,然后返回有序数据。而imap
立即返回数据并且订购更少。
当我使用时:
urls = [...some_data...]
rs = (grequests.get(u,, hooks=dict(response=callback_f)) for u in urls)
r = grequests.map(rs)
只要所有请求都完成,就会使用挂钩,并调用回调函数。
当我使用时:
urls = [...some_data...]
rs = (grequests.get(u,, hooks=dict(response=callback_f)) for u in urls)
r = grequests.imap(rs)
然后没有发送任何一个请求。
根据文档图和imap有着相同的API。
这是预期的行为吗?我不应该使用带有imap的钩子吗? 我使用的是Python 3.5。
答案 0 :(得分:4)
据我所知,
map
和imap
之间的区别在于map
等待所有请求完成,然后返回有序数据。而imap
立即返回数据并且订购更少。
这不是真的。 map
立即执行所有请求并返回结果(这可能需要一段时间,这就是为什么你可能会说"等待所有请求完成")。
但imap
按需仅。所以你必须遍历结果才能得到它们(但每次迭代只发出一个请求):
for single_request in r:
# so something with "single_request"