imap 与 grequests 库中的地图
imap vs. map in grequests library
据我所知,map
和 imap
之间的区别是 map
等待所有请求完成,然后 returns 订购数据。而 imap
returns 数据立即减少订购。
当我使用:
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)
然后没有发送一个请求。
根据文档 map 和 imap 完全相同 API。
这是预期的行为吗?我不应该在 imap 上使用 hooks 吗?
我正在使用 Python 3.5.
As far as I know the difference between map
and imap
is that map
waits for all requests to finish and then returns the ordered data. Whereas imap
returns data immediately and order less.
这不是真的。 map
立即执行所有请求并 returns 结果(这可能需要一段时间,所以这就是为什么你可能会说 "waits for all requests to finish")。
但是 imap
returns 一个生成器并且 仅 按需执行请求。因此,您必须在发送请求之前开始遍历生成器。遍历生成器以获得结果:
for single_request in r:
# so something with "single_request"
据我所知,map
和 imap
之间的区别是 map
等待所有请求完成,然后 returns 订购数据。而 imap
returns 数据立即减少订购。
当我使用:
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)
然后没有发送一个请求。
根据文档 map 和 imap 完全相同 API。
这是预期的行为吗?我不应该在 imap 上使用 hooks 吗? 我正在使用 Python 3.5.
As far as I know the difference between
map
andimap
is thatmap
waits for all requests to finish and then returns the ordered data. Whereasimap
returns data immediately and order less.
这不是真的。 map
立即执行所有请求并 returns 结果(这可能需要一段时间,所以这就是为什么你可能会说 "waits for all requests to finish")。
但是 imap
returns 一个生成器并且 仅 按需执行请求。因此,您必须在发送请求之前开始遍历生成器。遍历生成器以获得结果:
for single_request in r:
# so something with "single_request"