3
다음은 내가 작성한 테스트 케이스입니다. 왜 모든 프로세스가 1에서 5까지의 숫자를 인쇄하고 프로세스에서 나뉘어지지 않는 숫자입니까?왜이 python 큐는 항목을 여러 번 처리합니까?
는코드 :
#!/usr/bin/python
from subprocess import *
from Queue import Queue
from Queue import Empty
import multiprocessing
from multiprocessing import Process
def main():
r = Runner()
r.run()
class Runner(object):
processes = []
def run(self):
q = Queue()
for t in range(1,6):
q.put(t)
for pi in range(1,4):
p = Process(target=self.runFromQueue, args=(q,))
p.start()
self.processes.append(p)
for p in self.processes:
p.join()
print "Finished!"
def runFromQueue(self, q):
try:
while True:
number = q.get_nowait()
print str(number)
q.task_done()
except Empty:
pass
if __name__ == "__main__":
main()
OUPUT :
$ ./test_threads.py
1
2
3
4
5
1
1
2
3
2
4
3
5
4
5
Finished!
예상 OUPUT :
이$ ./test_threads.py
1
2
3
4
5
Finished!
그래,이게 그거야. 감사! –