pymongo - 迭代光标很慢

时间:2018-03-20 19:31:23

标签: python pymongo

我目前正在编写一个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

我愿意接受任何有关最终修复此性能问题的建议。

0 个答案:

没有答案