Updated ticker_new.py

This commit is contained in:
2018-05-18 14:04:54 +02:00
parent f78ddbc005
commit 40463f21ac
2 changed files with 30 additions and 35 deletions

4
Multiprocessing test/mp_test_4.py Normal file → Executable file
View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python #!/usr/bin/env python2
import sys #exit import sys #exit
import gobject import gobject
@@ -297,4 +297,4 @@ if __name__ == '__main__':
print "finished" print "finished"
sys.exit() sys.exit()

View File

@@ -3,16 +3,12 @@ import multiprocessing
import time import time
import sys import sys
def network_worker(tq, wq): def handler(tq, wq):
while tq.empty() is not True: while tq.empty() is not True:
ticker = tq.get(0.1) ticker = tq.get(0.1)
print(threading.currentThread().getName(),"received ",ticker)
wq.put(ticker-1000) wq.put(ticker-1000)
#simulate work
time.sleep(0.01) time.sleep(0.01)
tq.task_done() tq.task_done()
for i in range(8):
wq.put(None)
def worker(wq, i): def worker(wq, i):
while True: while True:
@@ -21,13 +17,9 @@ def worker(wq, i):
if task is None: if task is None:
break break
i.value += 1 i.value += 1
print(multiprocessing.current_process().name, task, wq.qsize(), i.value)
#simulate work
time.sleep(0.001) time.sleep(0.001)
wq.task_done() wq.task_done()
print(task)
wq.task_done() wq.task_done()
print("Closing: ", multiprocessing.current_process().name)
ticker_queue = multiprocessing.JoinableQueue() ticker_queue = multiprocessing.JoinableQueue()
@@ -37,34 +29,37 @@ tickers = range(1000)
processes = [] processes = []
threads = [] threads = []
for i in tickers: def looprun(n):
ticker_queue.put(i) for i in tickers:
ticker_queue.put(i)
for i in range(20): for i in range(20):
t = threading.Thread(target=network_worker, args = (ticker_queue, work_queue)) t = threading.Thread(target = handler, args = (ticker_queue, work_queue))
t.deamon = True t.deamon = True
print("Starting: ",t.name) t.start()
t.start() threads.append(t)
threads.append(t)
for i in range(8): for i in range(8):
p = multiprocessing.Process(target = worker, args = (work_queue, iterations, )) p = multiprocessing.Process(target = worker, args = (work_queue, iterations, ))
p.deamon = True p.deamon = True
print("Starting: ",p.name) p.start()
p.start() processes.append(p)
processes.append(p)
print("Closing down threads")
for t in threads:
print("Closing: ",t.name)
t.join()
print("Closing down workers")
for p in processes:
p.join()
print("Total number of iterations:", iterations.value)
ticker_queue.join()
for i in range(8):
work_queue.put(None)
work_queue.join()
print("Closing down workers")
for p in processes:
p.join()
print("Run:",n)
print("Total number of iterations:", iterations.value)
return
for n in range(1):
looprun(n)