diff options
author | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2020-04-27 01:11:27 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-27 01:11:27 (GMT) |
commit | 88499f15f547ccf7b15d37b0eaf51cc40bad5c39 (patch) | |
tree | b8473c3406ffa69c7301963f53e49cc7ed42a807 /Doc/library/queue.rst | |
parent | 68b352a6982f51e19bf9b9f4ae61b34f5864d131 (diff) | |
download | cpython-88499f15f547ccf7b15d37b0eaf51cc40bad5c39.zip cpython-88499f15f547ccf7b15d37b0eaf51cc40bad5c39.tar.gz cpython-88499f15f547ccf7b15d37b0eaf51cc40bad5c39.tar.bz2 |
bpo-40387: Improve queue join() example. (GH-19724)
Diffstat (limited to 'Doc/library/queue.rst')
-rw-r--r-- | Doc/library/queue.rst | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/Doc/library/queue.rst b/Doc/library/queue.rst index 2eeab5e..0ec5900 100644 --- a/Doc/library/queue.rst +++ b/Doc/library/queue.rst @@ -190,32 +190,28 @@ fully processed by daemon consumer threads. Example of how to wait for enqueued tasks to be completed:: + import threading, queue + + q = queue.Queue() + def worker(): while True: item = q.get() - if item is None: - break - do_work(item) + print(f'Working on {item}') + print(f'Finished {item}') q.task_done() - q = queue.Queue() - threads = [] - for i in range(num_worker_threads): - t = threading.Thread(target=worker) - t.start() - threads.append(t) + # turn-on the worker thread + threading.Thread(target=worker, daemon=True).start() - for item in source(): + # send thirty task requests to the worker + for item in range(30): q.put(item) + print('All task requests sent\n', end='') # block until all tasks are done q.join() - - # stop workers - for i in range(num_worker_threads): - q.put(None) - for t in threads: - t.join() + print('All work completed') SimpleQueue Objects |