python多线程的学习与心得

理清 进程 和 线程

进程:(有时也叫重量级进程)是程序的一次执行。每个进程都有自己 的地址空间、内存、数据栈及其记录其运行轨迹的辅助数据。(注意:各个进程有自己的内存空间、数据栈等,所以只能使用进程间通讯IPC,而不能直接共享信息。)

线程:(有时也叫轻量级进程),所有的线程运行在同一个进程中,共享相同的运行环境。线程们可以被想象成是在主进程或者说,“主线程”中并行运行的“迷你进程”。

掌握多线程之前需要搞清楚控制python代码执行的python虚拟机的原理。python解释器中可以“运行”多个线程,但是在任意时刻,只有一个线程在解释器中运行。而全局解释器锁GIL的存在确保了这个条件的成立。

python虚拟机的执行方式:
1.设置GIL
2.切换到一个线程去运行
3.运行:
a.指定数量的字节码的指令
b.线程主动让出控制(time.sleep(1))
4.把线程设置为睡眠状态
5.解锁GIL
6.重复上述步骤

忽略thread模块,使用更加高级更加全面的threading模块。

使用threading.enumerate()函数便可以看到当前线程的数量。

使用threading.current_thread()可以看到当前线程的信息。

使用queue,开启多线程,queue中若是存取了一些页面的url,则会被线程依依取走。一个线程启动后取走一个

request.urlretrieve(url,‘images/’+filename)

url指 图片下载的链接

之后的参数为下载到本地的目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值