我需要在python中进行并行化,我将使用多处理,因为我遇到了一个困难, 我做了7个流程并启动它,但我的cpu没有完全表现..为什么? 它没有显示任何错误,但它运行缓慢,CPU性能不上电.. 请给出一些建议。感谢
p1 = Process(target=TestFor1,args = ())
p2 = Process(target=TestFor2,args = ())
p3 = Process(target=TestFor3,args = ())
p4 = Process(target=TestFor4,args = ())
p5 = Process(target=TestFor5,args = ())
p6 = Process(target=TestFor6,args = ())
p7 = Process(target=TestFor7,args = ())
p1.start()
p2.start()
p3.start()
p4.start()
p5.start()
p6.start()
p7.start()
p1.join()
p2.join()
p3.join()
p4.join()
p5.join()
p6.join()
p7.join()
这个TestFor1 - 7,我做了七个不同的功能,它有个别的循环。 我想运行这7个for循环(独立)并行,因为我有12个核心cpu 我读了一些东西,所以我在开始的时候也放了Process。 init (self)但是它仍然没有给cpu加电..建议欣赏
答案 0 :(得分:0)
这一切都取决于你在做什么并行流程。如果他们没有进行cpu密集型任务或者都在访问相同的媒体(例如,写入同一个磁盘),那么你只能从mp中获得这么多。
这使用了我机器上的所有核心:
import multiprocessing
def func():
for i in xrange(10000000):
sum(range(100))
procs = []
for i in xrange(multiprocessing.cpu_count()):
p = multiprocessing.Process(target=func)
p.start()
procs.append(p)
print 'started', len(procs), 'processes'
for p in procs:
p.join()
print 'process done'
print 'all done'