diff --git a/Multiprocessing test/ticker.py b/Multiprocessing test/ticker.py new file mode 100644 index 0000000..dab4db4 --- /dev/null +++ b/Multiprocessing test/ticker.py @@ -0,0 +1,58 @@ +import threading +import multiprocessing +import time +import sys + +def network_worker(tq, wq): + ticker_queue = tq + work_queue = wq + while ticker_queue.empty() is not True: + ticker = tq.get() + print(threading.currentThread().getName(),"recieved ",ticker) + work_queue.put(ticker-1000) + time.sleep(0.02) + #ticker_queue.task_done() + work_queue.put(None) + return + +def worker(wq): + work_queue = wq + while work_queue.get() is not None: + task = work_queue.get() + print(multiprocessing.current_process(),"recieved",task) + #work_queue.task_done() + return + +ticker_queue = multiprocessing.JoinableQueue() + +work_queue = multiprocessing.JoinableQueue() +tickers = range(1000) +processes = [] + +for i in tickers: + ticker_queue.put(i) + +for i in range(20): + t = threading.Thread(target=network_worker, args = (ticker_queue, work_queue)) + t.deamon = True + print("Starting: ",t.name) + t.start() + +for i in range(4): + p = multiprocessing.Process(target = worker, args = (work_queue, )) + #p.deamon = True + print("Starting: ",p.name) + p.start() + processes.append(p) + +if work_queue.empty() == True: + for p in processes: + p.terminate() + p.join() + +print("Resulting work:", work_queue) + + + + +