Я запускаю программу, которая делает три разных запроса от API отдыха. data, индикатор, запрос выполняет все функции извлечения данных из API BitMEX, используя созданную мной оболочку.
Я использовал asyncio, чтобы попытаться ускорить процесс, так что, пока я жду ответа от предыдущего запроса, он может начать делать еще один.
Однако по какой-то причине моя асинхронная версия не работает быстрее. Код работает, и, насколько я знаю, я все правильно настроил. Но может быть что-то не так с тем, как я настраиваю сопрограммы?
Вот асинхронная версия:
import time
import asyncio
from bordemwrapper import BitMEXData, BitMEXFunctions
'''
asynchronous I/O
'''
async def data():
data = BitMEXData().get_ohlcv(symbol='XBTUSD', timeframe='1h',
instances=25)
await asyncio.sleep(0)
return data
async def indicator():
indicator = BitMEXData().get_indicator(symbol='XBTUSD',
timeframe='1h', indicator='RSI', period=20, source='close',
instances=25)
await asyncio.sleep(0)
return indicator
async def request():
request = BitMEXFunctions().get_price()
await asyncio.sleep(0)
return request
async def chain():
data_ = await data()
indicator_ = await indicator()
request_ = await request()
return data_, indicator_, request_
async def main():
await asyncio.gather(chain())
if __name__ == '__main__':
start = time.perf_counter()
asyncio.run(main())
end = time.perf_counter()
print('process finished in {} seconds'.format(end - start))