0
我通过多模块这样的并行我的Python脚本2.7:的Python 2.7:多处理,队列和加入
from multiprocessing import Queue, Process
def func(input_queue, result_queue):
my_object = input_queue.get()
# do something
result_queue.put([my_object, 0])
print "finished"
procs = []
chuncks = 4
input_queue = Queue()
result_queue = Queue()
j = len(my_objects)/chuncks
for i in range(chuncks):
input_queue.put(list(my_objects[(i*j):(i+1)*j]]))
for i in range(chuncks):
proc = Process(target=func, args=(input_queue, result_queue))
procs.append(proc)
proc.start()
print proc.pid
for proc in procs:
proc.join()
while not result_queue.empty():
print result_queue.get()
my_object
是我写的一个类my_class
的一个实例。
我的问题是: 根据实施my_class
,我的代码工作或没有。如果我将my_class
简单地定义如下
class my_class(object):
def __init__(self):
print "bla"
一切都很好。但是'现实中',my_class
比较复杂(有几个属性)。与真正落实my_class
执行上面的代码导致了以下的输出:
1545
1546
1547
1548
finished
finished
finished
finished
然后,stucks等待proc.join()
。我究竟做错了什么?
什么是你想要的输出? – AndyW
您可以尝试给我们最小的程序来证明问题吗? –
在这个例子中,输出应该是'result_queue'的内容( - 实际上,我的函数'func'比我在这里的发布更复杂:我使用my_object的属性进行一些计算,并传递my_object和计算结果(而不是0)给result_queue。) – Christine