【发布时间】:2020-08-03 22:18:38
【问题描述】:
我刚刚开始在 python 中试验 asyncio 库。 我的目的是加快我的代码速度,但是对于我的第一个脚本来说,确实没有比不使用 asyncio 更好的地方。
from yahoo_fin import stock_info as si
from yahoo_fin.stock_info import *
import time
import asyncio
async def price(stock):
prijs = str(si.get_live_price(stock))
await asyncio.sleep(0.001)
print(prijs)
def main():
loop = asyncio.get_event_loop()
t0 = time.time()
task = asyncio.gather(
price('aapl'),
price('fcx'),
price('acn'),
price('aapl'),
price('fcx'),
price('acn'),
price('aapl'),
price('fcx'),
price('acn'),
price('adbe'),
price('aapl'),
price('fcx'),
price('acn'),
price('aapl'),
price('fcx'),
price('acn'),
price('aapl'),
price('fcx'),
price('acn'),
price('adbe')
)
loop.run_until_complete(task)
t1 = time.time()
print("took %.2f ms" % (1000*(t1-t0)))
if __name__ == '__main__':
main()
如果我比较它而不对其进行异步编码:
from yahoo_fin import stock_info as si
from yahoo_fin.stock_info import *
import time
import asyncio
def price(stock):
prijs = str(si.get_live_price(stock))
print(prijs)
def main():
t0 = time.time()
price('aapl'),
price('fcx'),
price('acn'),
price('aapl'),
price('fcx'),
price('acn'),
price('aapl'),
price('fcx'),
price('acn'),
price('adbe'),
price('aapl'),
price('fcx'),
price('acn'),
price('aapl'),
price('fcx'),
price('acn'),
price('aapl'),
price('fcx'),
price('acn'),
price('adbe')
t1 = time.time()
print("took %.2f ms" % (1000*(t1-t0)))
if __name__ == '__main__':
main()
我认为异步版本会同时运行所有 price() 调用,从而减少执行程序的时间?我是不是做错了什么?
谢谢
【问题讨论】:
-
如果
str(si.get_live_price(stock))没有并行化,那么同时进行睡眠基本上没有好处。
标签: python python-asyncio