首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何并行执行阻塞http请求的映射?

如何并行执行阻塞http请求的映射?
EN

Stack Overflow用户
提问于 2021-03-24 08:54:58
回答 2查看 222关注 0票数 0

对于http请求,我有很多使用ureq的代码,我想知道我是否可以避免使用另一个http库。

我有一个urls列表,我正在调用ureq::get on它们。我想知道我能不能同时打这些电话。如何创建单独的线程并并行执行这些线程?

代码语言:javascript
复制
let v = vec!["www.qwe.com"; 3];
let responses = v.into_iter().map(|s| make_get_request(s)).collect::<Vec<_>>();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-24 09:01:46

你只要用人造丝就行了。这并不理想,因为它假定CPU绑定工作,因此默认情况下每个(逻辑)核心会生成一个线程,这可能低于您对HTTP请求的期望,但您可以始终自定义全局线程池(或者在本地线程池的范围内运行您的工作,线程计数更高)。

票数 2
EN

Stack Overflow用户

发布于 2021-03-24 15:01:51

如果您想要与请求一样多的线程,您可以只生成它们:

代码语言:javascript
复制
let v = vec!["www.qwe.com"; 3];
let handles = v
    .into_iter()
    .map(|s| thread::spawn(move || make_get_request(s)))
    .collect::<Vec<_>>();
let responses = handles.into_iter().map(|h| h.join()).collect::<Vec<_>>();

游乐场

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66777643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档