के साथ अच्छी तरह से नहीं खेलता है, मैं एक फ़ाइल नाम के लिए यूयूआईडी उत्पन्न करने की कोशिश कर रहा हूं, और मैं मल्टीप्रोसेसिंग मॉड्यूल का भी उपयोग कर रहा हूं। अनजाने में, मेरे सभी यूयूड्स बिल्कुल वही खत्म हो जाते हैं। यहाँ एक छोटा सा उदाहरण है:पायथन मल्टीप्रोसेसिंग uuid.uuid4()
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 के कोड में peeked, और यह निर्भर करता है-ऑन-मंच अनियमितता के लिए कुछ ओएस-स्तर दिनचर्या का उपयोग करने लगता है, इसलिए मैं एक अजगर के रूप में स्टम्प्ड हूँ -लेवल समाधान (यूयूआईडी मॉड्यूल को पुनः लोड करने या एक नया यादृच्छिक बीज चुनने जैसा कुछ करने के लिए)। मैं uuid.uuid1() का उपयोग कर सकता हूं, लेकिन केवल 8 अंक भिन्न हैं और मुझे लगता है कि समय से विशेष रूप से व्युत्पन्न होता है, जो खतरनाक लगता है, विशेष रूप से यह देखते हुए कि मैं मल्टीप्रोसेसिंग (इसलिए कोड ठीक उसी समय निष्पादित हो सकता है) । क्या इस मुद्दे के बारे में कुछ बुद्धि है?
निश्चित रूप से, uuid._uuid_generate_random = सेटिंग सही नहीं है। मैक ओएस एक्स के libc uuid_generate_random() में एक बग होना चाहिए। बग रिपोर्ट दर्ज करने के सुझाव के लिए धन्यवाद: http://bugs.python.org/issue8621 – yig
मै मैक ओएस एक्स के खिलाफ एक प्लेटफॉर्म बग भी दायर किया: http://openradar.appspot.com/radar?id=334401 – yig