"Eric S. Raymond" wrote: > > So I'm writing a module to that needs to generate unique cookies. The > module will run inside one of two environments: (1) a trivial test wrapper, > not threaded, and (2) a lomg-running multithreaded server. > > Because Python garbage-collects, hash() of a just-created object isn't > good enough. Because we may be threading, millisecond time isn't > good enough. Because we may *not* be threading, thread ID isn't good > either. > > On the other hand, I'm on Linux getting millisecond time resolution. > And it's not hard to notice that an object hash is a memory address. > > So, how about `time.time()` + hex(hash([]))? > > It looks to me like this will remain unique forever, because another thread > would have to create an object at the same memory address during the same > millisecond to collide. > > Furthermore, it looks to me like this hack might be portable to any OS > with a clock tick shorter than its timeslice. > > Comments? A combination of time.time(), process id and counter should work in all cases. Make sure you use a lock around the counter, though. -- Marc-Andre Lemburg ______________________________________________________________________ Company: http://www.egenix.com/ Consulting: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4