use ujson to load ticker files 30% faster from disk.

This commit is contained in:
creslinux 2018-07-16 16:09:42 +00:00
parent 4a39a754f4
commit 0f3339f74f
2 changed files with 27 additions and 4 deletions

View File

@ -10,9 +10,16 @@ import arrow
from freqtrade import misc, constants, OperationalException
from freqtrade.exchange import Exchange
from freqtrade.arguments import TimeRange
import importlib
ujson_found = importlib.util.find_spec("ujson")
if ujson_found is not None:
import ujson
logger = logging.getLogger(__name__)
if ujson_found is not None:
logger.debug('Loaded UltraJson ujson in optimize.py')
def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]:
if not tickerlist:
@ -63,11 +70,17 @@ def load_tickerdata_file(
if os.path.isfile(gzipfile):
logger.debug('Loading ticker data from file %s', gzipfile)
with gzip.open(gzipfile) as tickerdata:
pairdata = json.load(tickerdata)
if ujson_found is not None:
pairdata = ujson.load(tickerdata, precise_float=True)
else:
pairdata = json.load(tickerdata)
elif os.path.isfile(file):
logger.debug('Loading ticker data from file %s', file)
with open(file) as tickerdata:
pairdata = json.load(tickerdata)
if ujson_found is not None:
pairdata = ujson.load(tickerdata, precise_float=True)
else:
pairdata = json.load(tickerdata)
else:
return None
@ -163,7 +176,10 @@ def load_cached_data_for_updating(filename: str,
# read the cached file
if os.path.isfile(filename):
with open(filename, "rt") as file:
data = json.load(file)
if ujson_found is not None:
data = ujson.load(file, precise_float=True)
else:
data = json.load(file)
# remove the last item, because we are not sure if it is correct
# it could be fetched when the candle was incompleted
if data:
@ -226,4 +242,4 @@ def download_backtesting_testdata(datadir: str,
logger.debug("New Start: %s", misc.format_ms_time(data[0][0]))
logger.debug("New End: %s", misc.format_ms_time(data[-1][0]))
misc.file_dump_json(filename, data)
misc.file_dump_json(filename, data)

View File

@ -23,3 +23,10 @@ scikit-optimize==0.5.2
# Required for plotting data
#plotly==3.0.0
# find first, C search in arrays
py_find_1st==1.1.1
#Load ticker files 30% faster
ujson==1.35