@@ -98,7 +98,8 @@ def __init__(self, filename, queue_size=2, block_size=1024 * 1024):
98
98
self .exception = None
99
99
self .buffer = io .BytesIO ()
100
100
self .block_size = block_size
101
- self .worker = threading .Thread (target = self ._decompress )
101
+ # Using a daemon thread prevents programs freezing on error.
102
+ self .worker = threading .Thread (target = self ._decompress , daemon = True )
102
103
self ._closed = False
103
104
self .running = True
104
105
self .worker .start ()
@@ -231,17 +232,18 @@ def __init__(self,
231
232
queue .Queue (queue_size ) for _ in range (threads )]
232
233
self .output_queues : List [queue .Queue [Tuple [bytes , int , int ]]] = [
233
234
queue .Queue (queue_size ) for _ in range (threads )]
234
- self .output_worker = threading .Thread (target = self ._write )
235
+ # Using daemon threads prevents a program freezing on error.
236
+ self .output_worker = threading .Thread (target = self ._write , daemon = True )
235
237
self .compression_workers = [
236
- threading .Thread (target = self ._compress , args = (i ,))
238
+ threading .Thread (target = self ._compress , args = (i ,), daemon = True )
237
239
for i in range (threads )
238
240
]
239
241
elif threads == 1 :
240
242
self .input_queues = [queue .Queue (queue_size )]
241
243
self .output_queues = []
242
244
self .compression_workers = []
243
245
self .output_worker = threading .Thread (
244
- target = self ._compress_and_write )
246
+ target = self ._compress_and_write , daemon = True )
245
247
else :
246
248
raise ValueError (f"threads should be at least 1, got { threads } " )
247
249
self .threads = threads
0 commit comments