赞
踩
一、简介:关于多线程
Python多线程和C/C++多线程利用CPU核不太一样,Python多线程由于GIL存在的原因,只能单核分时间片来轮询运行多个线程,也就是说不管CPU是多少个核,用多线程时候只能是单核,然后多个thread将CPU分为一个个的时间片,一般来说是100条机械码,切换一个线程,轮询着来,时间片到了,就运行下一个线程,周而复始进行。
二、Python多线程方法和属性
Python多线程用的是threading.Thread直接创建线程,或者继承threading.Thread来创建新的线程类,来进行多线程设计。
threading.py脚本有很多内建方法和属性提供给用户使用,具体如下例子所示:
效果图:
三、创建一个线程
利用threading.Thread创建一个线程,并运行,查看结果。
运行效果:
我们继续往下看:
效果为:
从效果上可以看到,先打印了done,然后才打印线程T1中的数字,也就是主线程相关打印执行完成后,子线程的数字才打印。
继续看:
加入thread1.join()后的效果:
四、线程中Queue的使用
Queue队列的作用很重要,不管是在python中,还是c/c++中,多线程使用Queue很广泛的,下面针对Queue的使用,演示一个小案例,具体如下:
运行结果:
五、线程之Lock锁的使用
由于多线程是共用进行的资源,当多个线程同时访问一个资源,比如说文件,有的线程要写,有的线程读,如果没有处理好同步,那么就好造成错乱,再或者说,同一个全局变量,一个线程自加,一个线程自减,当没有进行加锁处理,会造成数据错乱的。
运行结果:
当加锁后的代码如下所示:
效果图:
另外,附几个快捷键,以便忘记。。。
▶ Pycharm中多行注释:Ctrl+/
▶ Pycharm中取消多行注释:再次Ctrl+/
▶ Pycharm中多行缩进:Tab
▶ Pycharm中取消多行缩进:Shift+Tab
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。