Код: Выделить всё
import pandas as pd
import pymongo
mongo = pymongo.MongoClient("mongodb://localhost:27017/")
data = pd.DataFrame(mongo['stock']['em_users_detail'].find({}).limit(1000000))
Код: Выделить всё
import psutil
import os
psutil.Process(os.getpid()).memory_info().rss / 1024 ** 2
Код: Выделить всё
# the first approach
data.memory_usage(deep=True).sum() / 1024 ** 2
# the second appraoch
from pympler import asizeof
asizeof.asizeof(data) / 1024 ** 2
- Почему результаты этих подходов так сильно различаются?
- Что еще может быть используя мою память Python?
Код: Выделить всё
import pymongo
mongo = pymongo.MongoClient("mongodb://localhost:27017/")
data = list(mongo['stock']['em_users_detail'].find({}).limit(1000000))
Поэтому я думаю, что проблема не связана с MongoDB. Вместо этого, похоже, это связано с pandas.DataFrame.
Я знаю, что здесь есть аналогичный вопрос: использование памяти Dataframe различается между sys.getsizeof и pandas Memory_usage. Но дело в том, что даже при установке deep=True при вызове Memory_usage в моем DataFrame результаты все равно не совсем совпадают.
Подробнее здесь: https://stackoverflow.com/questions/792 ... it-claimed
Мобильная версия