Зонд с экспоненциальным увеличением, а затем двоичный поиск с наименьшим использованием в распределенной хэш-таблице - словарь
Мне нужен совет, как подойти к этой задаче. Автор создал функцию find_next_free_dataset_num(node) и ищет свободные слоты в распределенной хеш-таблице. Этот DHT использует словарь, как интерфейс, который переопределяет __setitem__, __getitem__ и __contains__. Какой хороший дизайн. Но эта функция теперь использует линейное зондирование для поиска нового неиспользуемого слота для предсказуемого ключа. Таким образом, вопрос заключается в том, решает ли ее экспоненциальная num = num*num + 1 и как реализовать бинарный поиск по новому значению num между 0 и используемым слотом num?
def predictable_key(node, num):
return "monitor_dataset_{0}_{1}".format(node.get_address(), str(num))
def find_next_free_dataset_num(node):
# FIXME probe with exponential increase then binary search lowest unused
num = 0
while node[predictable_key(node, num)] is not None:
_log.info("Dataset {0} already exists!".format(num))
num += 1
return num