@@ -139,13 +139,10 @@ def put_nowait(self, obj):
139
139
140
140
def close (self ):
141
141
self ._closed = True
142
- try :
143
- self ._reader .close ()
144
- finally :
145
- close = self ._close
146
- if close :
147
- self ._close = None
148
- close ()
142
+ close = self ._close
143
+ if close :
144
+ self ._close = None
145
+ close ()
149
146
150
147
def join_thread (self ):
151
148
debug ('Queue.join_thread()' )
@@ -169,8 +166,9 @@ def _start_thread(self):
169
166
self ._thread = threading .Thread (
170
167
target = Queue ._feed ,
171
168
args = (self ._buffer , self ._notempty , self ._send_bytes ,
172
- self ._wlock , self ._writer .close , self ._ignore_epipe ,
173
- self ._on_queue_feeder_error , self ._sem ),
169
+ self ._wlock , self ._reader .close , self ._writer .close ,
170
+ self ._ignore_epipe , self ._on_queue_feeder_error ,
171
+ self ._sem ),
174
172
name = 'QueueFeederThread'
175
173
)
176
174
self ._thread .daemon = True
@@ -211,8 +209,8 @@ def _finalize_close(buffer, notempty):
211
209
notempty .notify ()
212
210
213
211
@staticmethod
214
- def _feed (buffer , notempty , send_bytes , writelock , close , ignore_epipe ,
215
- onerror , queue_sem ):
212
+ def _feed (buffer , notempty , send_bytes , writelock , reader_close ,
213
+ writer_close , ignore_epipe , onerror , queue_sem ):
216
214
debug ('starting thread to feed data to pipe' )
217
215
nacquire = notempty .acquire
218
216
nrelease = notempty .release
@@ -238,7 +236,8 @@ def _feed(buffer, notempty, send_bytes, writelock, close, ignore_epipe,
238
236
obj = bpopleft ()
239
237
if obj is sentinel :
240
238
debug ('feeder thread got sentinel -- exiting' )
241
- close ()
239
+ reader_close ()
240
+ writer_close ()
242
241
return
243
242
244
243
# serialize the data before acquiring the lock
0 commit comments