效率对比 threading & multiprocessing
切换视频源:

效率对比 threading & multiprocessing

作者: Ryan Gao 编辑: 莫烦 发布于: 2016-01-01

学习资料:

上篇讲了多进程/多核的运算,这次我们来对比下多进程,多线程和什么都不做时的消耗时间,看看哪种方式更有效率。

创建多进程 multiprocessing

和上节一样,首先import multiprocessing并定义要实现的job(),同时为了容易比较,我们将计算的次数增加到1000000

因为多进程是多核运算,所以我们将上节的多进程代码命名为multicore()

创建多线程 multithread

接下来创建多线程程序,创建多线程和多进程有很多相似的地方。首先import threading然后定义multithread()完成同样的任务

创建普通函数

最后我们定义最普通的函数。注意,在上面例子中我们建立了两个进程或线程,均对job()进行了两次运算,所以在normal()中我们也让它循环两次

运行时间

最后,为了对比各函数运行时间,我们需要import time, 然后依次运行定义好函数:

大功告成,下面我们来看下实际运行对比。

结果对比

普通/多线程/多进程的运行时间分别是1.131.30.64秒。 我们发现多核/多进程最快,说明在同时间运行了多个任务。 而多线程的运行时间居然比什么都不做的程序还要慢一点,说明多线程还是有一定的短板的。 戳这里查看“多线程的短板是什么”。

我们将运算次数加十倍,再来看看三种方法的运行时间:

这次运行时间依然是 多进程 < 普通 < 多线程,由此我们可以清晰地看出哪种方法更有效率。


降低知识传递的门槛

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 【支持莫烦】 能让我感到认同,我也更有理由坚持下去。

我组建了微信群,欢迎大家加入,交流经验,提出问题,互相帮持。 扫码后,请一定备注"莫烦",否则我不会同意你的入群申请。

wechat

    多进程 (Multiprocessing)