这是我的代码
import multiprocessing
def f(q , id):
data = q.get(block = True)
while data != None:
data = q.get(block = True)
print "%d : data is %d" % (id , data)
return
if __name__ == "__main__":
q = multiprocessing.Queue()
p1 = multiprocessing.Process(target=f , args = (q,1))
p2 = multiprocessing.Process(target=f , args = (q,2))
for i in range(100):
q.put(i,block = False)
p1.start()
p2.start()
p1.join()
p2.join()
当我试图用两个进程读取队列中的数据的时候,经常会有一部分数据丢失。尝试过加锁但是没用,不知道multiprocessing是否内置了锁的机制。
f 함수 시작 부분에서 data = q.get(block = True)를 즉시 실행해야 하는 이유는 무엇입니까?