Я пытаюсь сгенерировать uuid для имени файла, а также использую модуль многопроцессорной обработки. Неприятно, что все мои uuids заканчиваются точно так же. Вот небольшой пример:
import multiprocessing
import uuid
def get_uuid( a ):
## Doesn't help to cycle through a bunch.
#for i in xrange(10): uuid.uuid4()
## Doesn't help to reload the module.
#reload( uuid )
## Doesn't help to load it at the last minute.
## (I simultaneously comment out the module-level import).
#import uuid
## uuid1() does work, but it differs only in the first 8 characters and includes identifying information about the computer.
#return uuid.uuid1()
return uuid.uuid4()
def main():
pool = multiprocessing.Pool( 20 )
uuids = pool.map( get_uuid, range( 20 ) )
for id in uuids: print id
if __name__ == '__main__': main()
Я заглянул в код uuid.py, и кажется, что в зависимости от платформы используются некоторые подпрограммы на уровне ОС для случайности, поэтому я озадачен решением на уровне Python (чтобы сделать что-то вроде перезагрузки модуль uuid или выберите новое случайное семя). Я мог бы использовать uuid.uuid1 (), но отличаются только 8 цифр, и я думаю, что они получены исключительно из времени, что кажется опасным, особенно учитывая, что я многопроцессорный (поэтому код может выполняться точно в то же время). Есть ли какая-то мудрость в этом вопросе?