我目前正在编写一个python程序来分析存储在mongo数据库中的加密货币数据。 将数据从数据库传输到我的光标的速度相当快,但我最大的问题是当我迭代光标本身时。我花了7秒钟开始对它进行操作。我的功能在我的程序中被大量使用,每次通话等待7秒对于短时间分析来说并不是很好。
这是我的功能代码
def startDateForNewUpdateKlines(coin):
lastKlines = db.candlestick1m.find({"symbol": coin}).sort("close_time", pymongo.DESCENDING).limit(1)
lastDate = -1
print("Processing Klines")
for kline in lastKlines:
print("performance test")
if kline['close_time'] >= lastDate:
lastDate = kline['close_time']
# If the coin is not in DB yet, starting date will be 01/01/2018
if (lastDate == -1):
return datetime.datetime.fromtimestamp(1514761200000 / 1000.0).strftime("%Y-%m-%d %H:%M:%S")
return datetime.datetime.fromtimestamp((lastDate + 1) / 1000.0).strftime("%Y-%m-%d %H:%M:%S")
正如你所看到的,我的光标只包含一个元素,我的测试结论是需要很长时间的是行
for kline in lastKlines:
从显示“处理Klines”到显示“性能测试”需要7秒
我也尝试过写作
lastKlines = list(db.candlestick1m.find({"symbol": coin}).sort("close_time", pymongo.DESCENDING).limit(1))
现在,这条线也需要大约7秒才能完成。
我目前正在使用python 2.7.14(我使用的librairy仅在2.7中提供,我真的不希望自己将其转换为3.6.4)和pymongo 3.6.1
我愿意接受任何有关最终修复此性能问题的建议。