在python的多处理中,我很难集中精力处理两件事。我研究过文件,但还是不明白:
n-loop
中启动并加入进程(非重复代码,不知道我是否需要在Process
循环中执行任何特殊操作)目的:分解一个巨大的列表并分别运行每个块,以便更快地运行。在
queue = Queue()
def filter(aBigList, startV, endV, startP, endPr, minV):
chunks = list(split(aBigList, 6))
p1 = Process(target=func1, args=(chunks[0], startP, endPr))
p2 = Process(target=func1, args=(chunks[1], startP, endPr))
p3 = Process(target=func1, args=(chunks[2], startP, endPr))
p4 = Process(target=func1, args=(chunks[3], startP, endPr))
p5 = Process(target=func1, args=(chunks[4], startP, endPr))
p6 = Process(target=func1, args=(chunks[5], startP, endPr))
p1.start()
p2.start()
p3.start()
p4.start()
p5.start()
p6.start()
#wait for all processes to finish
p1.join()
p2.join()
p3.join()
p4.join()
p5.join()
p6.join()
print(queue)
def func1(subList, startP, endPr):
for i in subList:
price = ind.getPrice(i) #returns a price of argument element
if startP <= float(price) <= endPr:
print("added")
queue.put(i)
使用工作池
python
multiprocessing
标准库为这个用例提供了一个nice class that can be very helpful:multiprocessing.Pool
。它将为您管理多个工作人员,您只需发送工作单元,就可以根据需要完成。这是您的代码,适合使用池,而不是手动创建自己的进程。在另外,
^{pr2}$chunks
函数可以简单地写成borrowed from this answer.相关问题 更多 >
编程相关推荐