【发布时间】:2014-06-17 04:22:33
【问题描述】:
我做了一个简单的python程序,下面是源代码。
# -*- coding: utf-8 -*-
import sys
from multiprocessing import Process, Queue
def worker(q):
test = q.get()
print str(test) + ' success!'
if __name__ == "__main__":
test = ['a','e','f','d',1,2]
print test
q = Queue()
q.put(test)
p0 = Process(target=worker, args=(q,))
p0.start()
p0.join()
print 'python exit!!'
这是成功输出。
['a', 'e', 'f', 'd', 1, 2]
['a', 'e', 'f', 'd', 1, 2] success!
python exit!!
但是当我如下所示运行这个程序时,它只运行两个进程。
# -*- coding: utf-8 -*-
import sys
from multiprocessing import Process, Queue
def worker(q):
test = q.get()
print str(test) + ' success!'
if __name__ == "__main__":
test = ['a','e','f','d',1,2]
print test
q = Queue()
q.put(test)
p0 = Process(target=worker, args=(q,))
p1 = Process(target=worker, args=(q,))
p0.start()
p1.start()
p0.join()
p1.join()
print 'python exit!!'
它的输出是这个。
['a', 'e', 'f', 'd', 1, 2]
['a', 'e', 'f', 'd', 1, 2] success!
程序没有结束!问题是什么。队列有问题吗?当我使用
p0 = Process(target=worker, args=(test,))
代替q,没有问题。
【问题讨论】:
标签: python process queue multiprocess