summaryrefslogtreecommitdiffstats
path: root/Doc/library/queue.rst
diff options
context:
space:
mode:
authorRaymond Hettinger <rhettinger@users.noreply.github.com>2020-04-27 01:11:27 (GMT)
committerGitHub <noreply@github.com>2020-04-27 01:11:27 (GMT)
commit88499f15f547ccf7b15d37b0eaf51cc40bad5c39 (patch)
treeb8473c3406ffa69c7301963f53e49cc7ed42a807 /Doc/library/queue.rst
parent68b352a6982f51e19bf9b9f4ae61b34f5864d131 (diff)
downloadcpython-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.rst28
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