@@ -133,32 +133,21 @@ def _sanitize_params(prefix, suffix, dir):
133133 return prefix , suffix , dir , output_type
134134
135135
136- class _RandomNameSequence :
137- """An instance of _RandomNameSequence generates an endless
138- sequence of unpredictable strings which can safely be incorporated
139- into file names. Each string is six characters long. Multiple
140- threads can safely use the same instance at the same time.
141-
142- _RandomNameSequence is an iterator."""
136+ def _RandomNameSequence ():
137+ """Generate an endless sequence of unpredictable strings which
138+ can safely be incorporated into file names. Each string is 8
139+ characters long. Multiple threads and forked processes can
140+ safely use the same instance at the same time."""
143141
144142 characters = "abcdefghijklmnopqrstuvwxyz0123456789_"
145-
146- @property
147- def rng (self ):
143+ rng_pid = None
144+ while True :
148145 cur_pid = _os .getpid ()
149- if cur_pid != getattr (self , '_rng_pid' , None ):
150- self ._rng = _Random ()
151- self ._rng_pid = cur_pid
152- return self ._rng
153-
154- def __iter__ (self ):
155- return self
156-
157- def __next__ (self ):
158- c = self .characters
159- choose = self .rng .choice
160- letters = [choose (c ) for dummy in range (8 )]
161- return '' .join (letters )
146+ if cur_pid != rng_pid :
147+ choose = _Random ().choice
148+ rng_pid = cur_pid
149+ letters = [choose (characters ) for dummy in range (8 )]
150+ yield '' .join (letters )
162151
163152def _candidate_tempdir_list ():
164153 """Generate a list of candidate temporary directories which
0 commit comments