У меня есть небольшая функция (см. Ниже), которая возвращает список имен, которые отображаются из списка целых чисел (например, [1,2,3,4]), который может иметь длину до тысяча.Оптимизация для кода Python
Эта функция может быть вызвана десятками тысяч раз за раз, и я хочу знать, могу ли я что-либо сделать, чтобы она работала быстрее.
graph_hash
- большой хэш, который отображает ключи на наборы длиной 1000 или меньше. Я повторяю набор и сопоставляю значения с именами и возвращаю список. u.get_name_from_id()
запрашивает базу данных sqlite
.
Любые мысли для оптимизации любой части этой функции?
def get_neighbors(pid):
names = []
for p in graph_hash[pid]:
names.append(u.get_name_from_id(p))
return names
Вы можете сделать это генератором, хотя это просто подтолкнет узкое место к вызывающей функции кеша –
так же, как вы можете 'get_neighbors' и' u.get_name_from_id' – salparadise
Можете ли вы построить '' 'WHERE x IN [все элементы в наборе] '' 'clause и просто сделать запрос на один дБ на' '' pid''' ??? Если вы можете и '' 'get_name_from_id''' возвращает список, используйте' '' names.extend (....) '' ' – wwii