Python 并行网络请求:不同方法的比较
我想一次请求100个URL,目前正在这样做:Python 并行网络请求:不同方法的比较,python,python-3.x,concurrency,pool,Python,Python 3.x,Concurrency,Pool,我想一次请求100个URL,目前正在这样做: responses = list(PoolExecutor(max_workers=NUM_PARALLEL).map( lambda xml: requests.post(URL, headers=HEADERS, data={'message': xml}), xmls)) 关于这一点,有几个问题: 列表是“计算”实际生成器对象/表达式的最佳方法吗?除非我列出,否则我只会得到
responses = list(PoolExecutor(max_workers=NUM_PARALLEL).map(
lambda xml: requests.post(URL, headers=HEADERS, data={'message': xml}),
xmls))
关于这一点,有几个问题:
列表是“计算”实际生成器对象/表达式的最佳方法吗?除非我列出,否则我只会得到如下结果:
PoolExecutor在python3中是否经常用于执行并行网络请求,或者是否有其他更可取的方法?
PoolExecutor、AsyncIO和concurrent.futures之间的区别是什么?
是否列出“评估”实际发电机的最佳方法
对象/表达式?除非我列出,否则我只会得到如下结果:
.result_迭代器位于
0x10ecf9888>
我认为有一个问题解决了你的担忧
PoolExecutor经常用于在中执行并行网络请求吗
python3,或者还有其他更可取的方法吗
还有其他方法,是的,你可以在StackOverflow中找到。在这个问题的答案中,只有一个人使用concurrent.futures.ThreadPoolExecutor,这是最接近PoolExecutor的
PoolExector、AsyncIO和
你想做这样的事吗
这个问题的答案可以在书的第三章找到。异步遍历。更准确地说,AsyncIO提供的API与concurrent.futures包中的API非常相似。此包提供ThreadPoolExecutor和ProcessPoolExecutor。默认情况下是基于线程的,但可以使用基于线程或基于池的执行器。我认为AsyncIO文档中的示例与您的示例类似。我可能会使用concurrent.futures,但有时我认为更熟练地使用AsyncIO是值得的?是否列出“评估”的最佳方法。。。这应该包括在文档中,对吗?如果不是的话,我肯定有很多信息。PoolExecutor在python3中是否经常用于执行并行网络请求,或者是否有其他更可取的方法?我忘了提到2可能是非常主观的。在某种程度上可以判断一个图书馆有多受欢迎/普遍,尽管这并不完全是一个想法。我想说,还有其他更可取的方法吗。