У меня есть скрипт, который, кажется, работает медленно и который я профилировал с использованием cProfile (и инструмента визуализации KCacheGrind )
Кажется, что почти 90% времени выполнения - этопоследовательность импорта, и особенно запуск файлов _ _ init _ _.py
...
Вот снимок экрана с выводом KCacheGrind (извините за прикрепление изображения ...)
Я не очень знаком с тем, как работает последовательность импорта в python, поэтому, возможно, я что-то запутал ... Я также поместил файлы _ _ init _ _.py
в каждый из моих пользовательских пакетов, не уверенесли бы это было то, что я должен был сделать.
В любом случае, если у кого-то есть подсказка, мы будем очень благодарны!
РЕДАКТИРОВАТЬ: дополнительное изображение, когда функция сортируется по самому себе:
EDIT2:
здесь код прилагается, для большей ясности для отвечающих:
from strategy.strategies.gradient_stop_and_target import make_one_trade
from datetime import timedelta, datetime
import pandas as pd
from data.db import get_df, mongo_read_only, save_one, mongo_read_write, save_many
from data.get import get_symbols
from strategy.trades import make_trade, make_mae, get_prices, get_signals, \
get_prices_subset
#from profilehooks import profile
mongo = mongo_read_only()
dollar_stop = 200
dollar_target = 400
period_change = 3
signal = get_df(mongo.signals.signals, strategy = {'$regex' : '^indicators_group'}).iloc[0]
symbol = get_symbols(mongo, description = signal['symbol'])[0]
prices = get_prices(
signal['datetime'],
signal['datetime'].replace(hour = 23, minute = 59),
symbol,
mongo)
make_one_trade(
signal,
prices,
symbol,
dollar_stop,
dollar_target,
period_change)
функция get_prices просто получает данные из базы данных mongo db, а make_one_trade dПростой расчет с пандами.Это никогда не создает проблем где-либо еще в моем проекте.
EDIT3:
Здесь экран измельчения Kcache, когда я выбираю опцию «обнаружить цикл» на вкладке «Просмотр»:
Может ли это на самом деле означать, что в моих автоматически созданных пакетах действительно есть циклический импорт, для решения которого требуется все это время?