I am having 1 queue which is accessed by 2 multiprocessing functions. Both these processes and consuming the same item in the queue and then clearing it. I want each one to take one unique value only. What am I doing wrong?
import time
import queue
import multiprocessing
import threading
q = queue.Queue(maxsize=0)
run_1 = 1
run_2 = 1
def multi_one():
while run_1 == 1:
item = q.get()
q.task_done()
time.sleep(2)
print(item)
def multi_two():
while run_2 == 1:
item = q.get()
q.task_done()
time.sleep(2)
print(item)
p1 = multiprocessing.Process(target=multi_one)
p2 = multiprocessing.Process(target=multi_two)
for item in range(10):
q.put(item)
p1.start()
p2.start()
Output I am getting is:
0
0
1
1
2
2
...
Output I am looking for is:
0
1
2
3
4
5
6
7
8
9