def shutdown_writer():
"""Signal writer thread to exit and wait for it to finish."""
global _writer_thread
_writer_shutdown.set()
# Put enough poison pills for any possible writer threads (usually 1)
_write_queue.put(None)
if _writer_thread:
_writer_thread.join(timeout=2)
_writer_thread = None # Allow restart
# Clean up: clear shutdown flag for future tests
_writer_shutdown.clear()
# Drain any leftover queue items (to avoid memory leaks between tests)
try:
while True:
_write_queue.get_nowait()
_write_queue.task_done()
except queue.Empty:
pass