Предотвратить столкновение с uuid в Python! - PullRequest
0 голосов
/ 01 ноября 2018

Я генерирую uuid в Python, я заметил, что есть столкновения. Я получаю коллизии, если использую uuid.uuid1() или uuid.uuid4().

Я прочитал много статей в Интернете, но они подробно описывают «теорию» невозможности коллизии UUID при правильной генерации.

Но мне еще предстоит найти такой, который объясняет, как я могу обеспечить правильное выполнение генерации UUID .

Как я могу сделать это до Python 3.7?
Я видел В Python 3.7 есть понятие безопасности UUID , но есть ли способ сделать это за пределами 3.7?

подробности:
работает на Ubuntu 18.04, работает код Python в Jupyter Lab.

1 Ответ

0 голосов
/ 01 ноября 2018

Прежде всего нам нужно понять, как генерируется UUID .

UUID1 генерируется в зависимости от time + Host ID + random component. Таким образом, если вы генерируете UUID1 на том же хосте на в то же время , вы полагаетесь только на random component, что составляет 14 битов, что означает, что у вас есть 1 шанс из 16384 столкнуться. Не очень высоко, но следует учитывать.

UUID4 является полностью случайным (128 бит) и НЕ ДОЛЖЕН сталкиваться, если в вашем случае он сталкивается, вероятно, из-за чего-то в вашей системе, как в этой проблеме .

Не могли бы вы указать свою ОС для дальнейших исследований? У вас установлен os.urandom?

...