Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- __author__ = 'user'
- import multiprocessing
- from time import sleep
- class A:
- def __init__(self, num_proc=4):
- self.m = multiprocessing.Manager()
- self.tasks_done = self.m.list()
- self.q = multiprocessing.Queue()
- self.num_proc = num_proc
- #self.eve = multiprocessing.Event()
- #self.sema = multiprocessing.Semaphore()
- self.lo = multiprocessing.Lock()
- def worker(self):
- while True:
- #self.eve.wait()
- #self.sema.acquire()
- self.lo.acquire()
- task = self.q.get()
- print task
- self.tasks_done.append(task)
- for i in range(task-5, task+5):
- if i not in self.tasks_done:
- self.add_task(i)
- #self.eve.clear()
- #self.sema.release()
- self.lo.release()
- def init_processes(self):
- for i in range(self.num_proc):
- p = multiprocessing.Process(target=self.worker)
- p.daemon = True
- p.start()
- p.join()
- def add_task(self, i):
- self.q.put(i)
- #self.eve.set()
- if __name__ == '__main__':
- a = A()
- a.add_task(100)
- a.init_processes()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement