두 개의 프로세스를 만들고 있습니다. 1에서 5까지 Mutliprocessing.Queue에 int 값을 추가합니다. 다른 하나는 Queue에 한 번 더 추가 한 다음 10 초 동안 반복하고 Queue에서 값을 읽으려고 시도합니다.Python 다중 처리 대기열에서 대기열 항목을 공유하지 않습니다.
두 번째 프로세스가 첫 번째 스레드에서 항목을 대기열에 추가하지 못하는 이유는 무엇입니까? 나는 Multiprocessing.Queue를 만들 때 한 프로세스에서 추가 할 수 있고 다른 프로세스에서 읽을 수 있다는 가정하에있었습니다. 큐가 전달되고 부모 큐는 큐에 추가되지 않는 것처럼 보입니다. 부모가 만든 두 개의 다른 프로세스에서 어떤 유형의 대기열에 항목을 추가 할 수 있습니까?
from multiprocessing import Process, Queue
import time
def f(q):
for a in range(5):
print "Adding to Q!"
time.sleep(1)
q.put(a)
def g(q):
i = 0
v = True
q.put("Adding to this q")
while v == True:
time.sleep(1)
i = i + 1
print "Get slept time " , i
try:
print "From the q " + str(q.get(True,1))
except:
print "Empty"
if i == 10:
v = False
if __name__ == '__main__':
q = Queue(10)
print "First process"
p = Process(target=f, args=(q,))
p.start()
print "Second Process"
p1 = Process(target=g, args=(q,))
p1.start()
p.join()
p1.join()
추가 또는이) (가입 제거는 더는
내 출력 지금과 같은 원하는 출력에 영향이없는 것으로 보인다. **이 원하는 출력 **
First process
Second Process
Adding to Q!
Get slept time 1
From the q Adding to this q
Adding to Q!
Get slept time 2
Adding to Q!
Empty
Get slept time 3
Adding to Q!
Empty
Get slept time 4
Adding to Q!
Empty
Get slept time 5
Empty
Get slept time 6
Empty
Get slept time 7
Empty
Get slept time 8
Empty
Get slept time 9
Empty
Get slept time 10
Empty
python 2.6 x64를 사용하여 centos 6.5에서 테스트했으며 원하는 결과를 얻었습니다. –
내가 가지고있는 출력을 얻었습니까? 아니면 다른 결과를 얻었습니까? 게시 할 수 있습니까? – tiggles