@@ -133,21 +133,32 @@ def _sanitize_params(prefix, suffix, dir):
133133 return prefix , suffix , dir , output_type
134134
135135
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."""
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."""
141143
142144 characters = "abcdefghijklmnopqrstuvwxyz0123456789_"
143- rng_pid = None
144- while True :
145+
146+ @property
147+ def rng (self ):
145148 cur_pid = _os .getpid ()
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 )
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 )
151162
152163def _candidate_tempdir_list ():
153164 """Generate a list of candidate temporary directories which
0 commit comments