效率对比 threading & multiprocessing
作者: 莫烦 发布于: 2016-01-01
编辑: 学习资料:
上篇讲了多进程/多核的运算,这次我们来对比下多进程,多线程和什么都不做时的消耗时间,看看哪种方式更有效率。
创建多进程 multiprocessing¶
和上节一样,首先import multiprocessing
并定义要实现的job()
,同时为了容易比较,我们将计算的次数增加到1000000
因为多进程是多核运算,所以我们将上节的多进程代码命名为multicore()
创建多线程 multithread¶
接下来创建多线程程序,创建多线程和多进程有很多相似的地方。首先import threading
然后定义multithread()
完成同样的任务
创建普通函数¶
最后我们定义最普通的函数。注意,在上面例子中我们建立了两个进程或线程,均对job()
进行了两次运算,所以在normal()
中我们也让它循环两次
运行时间¶
最后,为了对比各函数运行时间,我们需要import time
, 然后依次运行定义好函数:
大功告成,下面我们来看下实际运行对比。
结果对比¶
普通/多线程/多进程的运行时间分别是1.13
,1.3
和0.64
秒。 我们发现多核/多进程最快,说明在同时间运行了多个任务。 而多线程的运行时间居然比什么都不做的程序还要慢一点,说明多线程还是有一定的短板的。 戳这里查看“多线程的短板是什么”。
我们将运算次数加十倍,再来看看三种方法的运行时间:
这次运行时间依然是 多进程 < 普通 < 多线程,由此我们可以清晰地看出哪种方法更有效率。