Replies: 1 comment 5 replies
-
Codeimport queue
import threading
import time
import timeit
from concurrent.futures import ThreadPoolExecutor
from threading import Thread
import concurrent.futures
def worker(inp):
time.sleep(0.0001)
def q_worker(inp_q):
while True:
worker(inp_q.get())
inp_q.task_done()
nr_threads = 1
news_wrapper = 'abc'
tq = queue.Queue()
tp = ThreadPoolExecutor(max_workers=nr_threads)
tp_tasks = set()
for _ in range(nr_threads):
Thread(target=q_worker, args=(tq,), daemon=True).start()
print("Funct:", min(timeit.repeat("worker(news_wrapper); worker(news_wrapper); worker(news_wrapper); worker(news_wrapper);", setup="from __main__ import worker, news_wrapper", number=100, repeat=5)))
print("Queue:", min(timeit.repeat("tq.put(news_wrapper); tq.put(news_wrapper); tq.put(news_wrapper); tq.put(news_wrapper); tq.join()", setup="from __main__ import tq, news_wrapper", number=100, repeat=5)))
print("TPool:", min(timeit.repeat("tp_tasks.add(tp.submit(worker, news_wrapper)); tp_tasks.add(tp.submit(worker, news_wrapper)); tp_tasks.add(tp.submit(worker, news_wrapper)); tp_tasks.add(tp.submit(worker, news_wrapper)); concurrent.futures.wait(tp_tasks); tp_tasks.clear()", setup="import concurrent.futures; from __main__ import worker, tp, tp_tasks, news_wrapper", number=100, repeat=5))) |
Beta Was this translation helpful? Give feedback.
5 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I have been using
yappi
andline_profiler
a bit, and wanted a place where I can store some of my results for later.And maybe if anyone has better ideas, then let me know :)
Beta Was this translation helpful? Give feedback.
All reactions