Skip to content

Instantly share code, notes, and snippets.

@Jwely
Created December 28, 2016 23:55
Show Gist options
  • Save Jwely/3195fb32406a8baf01cd6f258628a073 to your computer and use it in GitHub Desktop.
Save Jwely/3195fb32406a8baf01cd6f258628a073 to your computer and use it in GitHub Desktop.
from queue import Queue
import threading
import os
from datetime import datetime
import time
def updater():
for i in range(10):
time.sleep(1)
yield i
class Worker(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self, name=os.urandom(16))
self.queue = queue
def put(self, *args):
self.queue.put(*args)
def do_work(self):
while True:
item = self.queue.get()
time.sleep(1)
print(item, datetime.now())
self.queue.task_done()
def run(self):
self.do_work()
class Manager():
def __init__(self, n_workers=10):
self.n_workers = n_workers
def do_work(self, jobs):
queue = Queue()
for i in range(self.n_workers):
worker = Worker(queue)
worker.setDaemon(True)
worker.start()
for job in jobs:
queue.put(job)
queue.join()
manager = Manager(n_workers=10000)
manager.do_work(list(range(10000)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment