python中频繁的print到底能浪费多长时间

最近在做FLY量化交易系统的维护,总有客户说策略执行好慢,结果有些人展示策略一看,每个语句后边都要打印下数据。

哪些数据都是辅助用的,打印出来能当饭吃么,净浪费时间了

今天简单展示下print到底能消耗多少时间

例子:

import time

a=time.time()
num=0
while num<10000:
    num=num+1
    print(num)
print('有"print"时的耗时:%f' %(time.time()-a))

b=time.time()
num=0
while num<10000:
    num=num+1
print('没有"print"时的耗时:%f' %(time.time()-b))

结果:

...

有"print"时的耗时:85.897000
没有"print"时的耗时:0.002000

同样1W次循环,相差了 85.897/0.002=42948.5倍。


如果是超超超超级复杂的策略,等你打印完数据,好行情早就没有了,把握时机啊~老铁。



### Python aiohttp 中实现长连接以复用 TCP 连接池 在 `aiohttp` 库中,默认情况下会启用连接池机制,这意味着可以复用已建立的 TCP 连接来处理多个 HTTP 请求。这种行为通过创建一个持久化的 `ClientSession` 实现[^3]。 当使用 `aiohttp.ClientSession()` 时,它会在内部维护一个连接池,并尝试重用现有的连接而不是每次都重新建立新的连接。为了确保能够有效地利用长连接和复用 TCP 连接池,需要注意以下几点: 1. **单次实例化 ClientSession**: 不应在每次请求时都创建一个新的 `ClientSession` 对象。相反,应该在整个程序生命周期内只创建一次该对象,并将其用于所有的 HTTP 请求。 2. **设置连接保持时间 (keep-alive)**: 默认情况下,`aiohttp` 已经启用了 `keep-alive` 功能,因此无需额外配置即可自动复用连接。 以下是基于 `aiohttp` 的代码示例,展示如何设置长连接并复用 TCP 连接池: ```python import aiohttp import asyncio async def fetch_url(session, url): async with session.get(url) as response: return await response.text() async def main(): urls = [ "https://example.com", "https://example.org", "https://example.net" ] # 创建一个全局的 ClientSession 实例 async with aiohttp.ClientSession() as session: tasks = [] for url in urls: tasks.append(fetch_url(session, url)) responses = await asyncio.gather(*tasks) for i, resp in enumerate(responses): print(f"Response from URL {i+1}: {resp[:100]}...") loop = asyncio.get_event_loop() loop.run_until_complete(main()) ``` #### 解析 - 使用 `async with aiohttp.ClientSession() as session:` 来初始化一个 `ClientSession` 对象。这个对象将在整个协程期间被共享。 - 所有的 HTTP 请求都在同一个 `session` 下执行,从而允许底层库复用已经存在的 TCP 连接。 - 如果需要进一步优化性能,可以通过调整参数控制连接池的行为,例如最大连接数 (`connector_limits`) 或者禁用 SSL 验证等。 注意,在某些特殊场景下可能还需要手动关闭未使用的闲置连接以防资源浪费。可通过传递自定义 Connector 参数给 `ClientSession` 完成更精细管理。 ---
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值