【发布时间】:2019-01-30 14:52:25
【问题描述】:
def myfun(a):
return a*2
p=Pool(5)
k0=time.time()
p.map(myfun,[1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10])
k1=time.time()
print(k1-k0)
k0=time.time()
for i in [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10]:
myfun(i)
k1=time.time()
print(k1-k0)
我在 python 中使用多处理包。如您所见,我分别执行了两个不同的 sn-ps 代码。使用 Pool.map 的第一个比串行执行的第二个花费更多时间。谁能向我解释为什么会这样?我认为 p.map() 会快得多。不是并行执行的吗?
【问题讨论】:
-
我从未使用过
Pool.map(),但我可以通过 Java 或 C 肯定地告诉你,在小数据上,无论你使用多少线程,它的运行速度总是比使用一个线程慢,因为“启动”这些线程等需要时间。尝试用严肃的for运行代码,比如数千个步骤,你会看到一些好的结果。如果我错了,对不起,我只是告诉你我在 Java 或 C 方面的经历。
标签: python python-multiprocessing multiprocess