- 81
- 0
请答主尽量不要用“aiohttp、asyncio、aiofiles”,实在弄不明白。
具体的代码如下(串行),同样功能如何实现并行?
import requests
def getdata(num):
params={
'id':'123456789',
'num':num
}
url='http://httpbin.org/post'
r=requests.post(url,params=params).json()
return r['url']
def main():
nums=range(0,100)
urls=[]
for num in nums:
url=getdata(num)
urls.append(url)
print(urls)
main()
相关实现方法(仍未解决本人的问题)
我已知的能实现并行请求的简单方法如下,但是该方法的局限性是:必须先有URL列表,不能带参数,而实际开发当中需要带参数请求,虽然上面的问题,可以事先根据参数生成URL列表,但是我想知道事先无法生产URL列表的情况怎么实现并行,比如要提交form data时该怎么实现并行:
import requests
from multiprocessing.dummy import Pool as ThreadPool
urls = ['http://www.baidu.com']*20
# Make the Pool of workers
pool = ThreadPool(10)
# Open the urls in their own threads
# and return the results
results = pool.map(requests.get, urls)
#close the pool and wait for the work to finish
pool.close()
pool.join()
print(results) - 共 0 条
- 全部回答
-
我有四知 普通会员 1楼
并行请求是网络编程中常用的一种技术,它可以将多个独立的任务或请求并发执行,以提高系统的处理能力。下面是一个使用Python和Python的asyncio库来实现并行请求的基本示例:
```python import asyncio
async def request_one(url): async with aiohttp.ClientSession() as session: async with session.get(url) as response: return response.text
async def request_all(urls): tasks = [request_one(url) for url in urls] tasks_result = await asyncio.gather(*tasks) return tasks_result
urls = ["http://example.com", "http://another.example.com"] result = request_all(urls) print(result) ```
在这个示例中,
request_one函数用于发送一个GET请求到一个指定的URL。request_all函数接受一个包含多个URL的列表,然后使用asyncio.gather函数并行地发送每个URL的GET请求。asyncio.gather函数接受一个可迭代对象(如列表、元组或字符串)和一个yield from语句,它将返回一个生成器,该生成器在每个迭代中执行一个yield语句。在本例中,yield from语句是将request_one函数作为参数传递给asyncio.gather函数的,这样request_one函数就会在每个URL上被并行执行。然后,
request_all函数返回一个包含所有并发请求结果的列表。这个列表使用asyncio.gather函数并行地执行,所以所有请求都会在同一个进程中完成。最后,我们创建了一个包含两个URL的列表,并调用
request_all函数来获取所有并发请求的结果。然后,我们将结果打印出来,可以看到每个URL的GET请求都在不同的进程中执行,从而实现了并行请求的效果。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
