码迷,mamicode.com
首页 > 编程语言 > 详细

python 多线程多进程

时间:2019-11-20 15:25:05      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:nbsp   一起   全局   实例化   style   资源   proc   记事本   复杂   

一、线程&进程

对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。进程是很多资源的集合。

 

有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”称为线程(Thread)。

由于每个进程至少要干一件事,所以,一个进程至少有一个线程。当然,像Word这种复杂的进程可以有多个线程,多个线程可以同时执行,多线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。当然,真正地同时执行多线程需要多核CPU才可能实现。线程是最小的执行单元,而进程由至少一个线程组成。

我们在做事情的时候,一个人做是比较慢的,如果多个人一起来做的话,就比较快了,程序也是一样的,我们想运行的速度快一点的话,就得使用多进程,或者多线程,在python里面,多线程被很多人诟病,为什么呢,因为Python的解释器使用了GIL的一个叫全局解释器锁,它不能利用多核CPU,只能运行在一个cpu上面,但是你在运行程序的时候,看起来好像还是在一起运行的,是因为操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。这个叫做上下文切换。

 

二、python中多线程使用threading模块

启动多个线程实例

import threading
import time

def down_load(name):
    time.sleep(5)
    print(文件%s下载完成%name)

t1=threading.Thread(target=down_load,args=(aaa,))   # 实例化一个线程
# 函数没有参数,实例化时将args去掉,有多个参数时都写当args里边
t1.start()  #启动线程t1
t2=threading.Thread(target=down_load,args=(aaa,))   # 实例化一个线程
t2.start()  #启动线程t2

 

python 多线程多进程

标签:nbsp   一起   全局   实例化   style   资源   proc   记事本   复杂   

原文地址:https://www.cnblogs.com/zxj-blog/p/11897904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!