python - Python 程序在一台机器上运行异步获取任务的速度非常快,但在其他机器上却没有
问题描述
我有一个问题,python 代码在我的 PC 上运行得非常快,而我已经尝试了另外 4 台机器,而且它们都运行相同的代码,但速度较慢。
在我运行代码的 PC 上,它经过 200 个请求并在 3 分钟内返回 200 个响应。这台机器没有什么特别之处。
i5 gen 5 8GB RAM SSD 驱动器
虽然我已经在功能更强大的机器和功能更弱的机器上进行了尝试,但当我运行相同的代码时,它的速度要慢得多,而在速度较慢的机器上,它只完成 10 条记录就退出了,就像它已经完成一样。在速度更快的机器上,它最多可以记录 35 条记录,然后退出。
知道可能导致问题的原因吗?
我的机器有更多的可再发行版本。他们能提供优势吗?
以下是获取部分所涉及的代码。
async def fetch(session, payload):
url = ApiUrl
#print(payload)
async with session.get(url, data = payload) as response:
readyResponse= await response.text()
global c
c+=1
print(c)
parseIt(readyResponse) # function that parses results
async def fetch_all(payloads, loop):
connector = aiohttp.TCPConnector(limit=10)
async with aiohttp.ClientSession(connector=connector, loop=loop) as session:
results = await asyncio.gather(*[fetch(session, payload) for payload in allReq], return_exceptions=True)
return results
if __name__ == '__main__':
loop = asyncio.get_event_loop()
payloads = allReq
htmls = loop.run_until_complete(fetch_all(payloads, loop))
解决方案
我找到了答案。
我必须安装 pip install aiohttp[speedups],其中包括用于加速客户端 API 解析 DNS 的 aiodns,以及一个捆绑包中的 aiodns 和 brotlipy。
而已。
推荐阅读
- flutter - 如何触发作为 PersistentTabView 屏幕列表 (PersistentTabView) 子级的特定 StatefulWidget 的 didChangeDependencies()
- android - 如何在 Flutter 中提供奖励之前检查用户是否真的邀请朋友使用我的应用程序?
- react-native - 在下拉列表中获取值
- node.js - SendInBlue - sib-api-v3-sdk sendTransacEmail() 返回 403 Forbidden
- node.js - npm start 上的 express 应用程序中出现意外的标识符
- firebase - 消息应用程序中的 Firebase 通知、后台服务和套接字相关问题
- microsoft-graph-api - 如何通过图形 API 分配班次
- c++ - 如何在堆内存 C++ 中初始化通用类型双指针?
- csv - 我在数组中有 10 个 csv 文件,我想使用 perl 对每个 csv 文件的行数
- javascript - 如何在输入类型 =“日期”中隐藏过去的日期