Python基础--线程
在Python3中可以通过两种方式来创建线程
1.通过threading.Thread直接在线程中运行函数
2.通过继承threadting.Thread类来创建线程
用threading.Thread直接在线程中运行函数
threadting.Thread基本使用方法Thread(group=None,target=None,name=None,args=(),kwargs={},*,daemon=None)target:要运行的函数 args:传入函数的参数元组eg:import threadingdef thrfun(x,y):for i in range(x,y):print(str(i*i)+':')ta = threading.Thread(target=thrfun,args=(1,6))tb = threading.Thread(target=thrfun,args=(16,21))ta.start()tb.start()
通过继承threading.Thread类来创建线程
这种方法只要重载threading.Thread类的run()方法,然后调用类的start()就能创建线程,并运行run()函数中的代码。
---------------------------------------------------------------------
--注:我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:895817687
---------------------------------------------------------------------import threadingclass myThread(threading.Thread):def __init__(self,mynum):super().__init__()self.mynum = mynumdef run(self):for i in range(self.mynum,self.mynum+5):print(str(i * i) + ':')ma = myThread(1)mb = myThread(16)ma.start()mb.start()
线程类Thread
join([timeout]):当某个线程或函数执行时需等另一个线程完成操作后才能继续,则应调用另一个线程的join()方法,可选参数timeout用于指定线程运行的最长时间。
isAlive():用于查看线程是否运行
name属性是线程设置的线程名
daemon属性用来设置线程是否随主线程退出而退出,属性值为True是不会随主线程退出而退出。
eg:import threadingimport timedef thrfun(x,y,thr=None):if thr:thr.join()else:time.sleep(2)for i in range(x,y):print(str(i * i) + ':')ta = threading.Thread(target=thrfun,args=(1,6))tb = threading.Thread(target=thrfun,args=(16,21,ta))ta.start()tb.start()
线程运行的函数thrfun()若传递函数中包括一个线程实例,则调用join()方法并等待其结束后才能运行,否则,睡眠2秒。
Python中可以使用threading模块中的对象Lock和RLock(可重入锁)进行简单的线程同步,对于同一时刻只允许一个线程操作的数据对象,可以把操作过程放在Lock和RLock的acquire方法和release方法之间。RLock可以在同一调用链中多次请求不会锁死,Lock则会锁死。
基本使用方法:
lock = threading.RLock() #创建lock对象lock = acquire() #开始锁定pass #访问或操作多个线程共享数据lock.release() #释放锁这两个方法前后调用次数要一致才能真正释放。使用RLock,代码如下:import threadingimport timeclass myThread(threading.Thread):def run(self):global xlock.acquire()for i in range(3):x += 10time.sleep(1)print(x)lock.release()x = 0lock = threading.RLock()def main():thrs = []for item in range(5):thrs.append(myThread())for item in thrs:item.start() if __name__ == '__main__':main(
Python基础--线程相关推荐
- Python基础---线程
调用方式 python的线程调用有两种方式.一种是直接调用,一种是继承式调用 直接调用 import threading,time#方法一 def run(n):print(n)time.sleep( ...
- python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...
python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...
- Python基础教程:线程操作(oncurrent模块)详解
进程是cpu资源分配的最小单元,一个进程中可以有多个线程. 线程是cpu计算的最小单元. 对于Python来说他的进程和线程和其他语言有差异,是有GIL锁. GIL锁 GIL锁保证一个进程中同一时刻只 ...
- Python基础之线程(Thread)
进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行 ...
- Python进阶并发基础--线程,全局解释器锁GIL由来,如何更好的利用Python线程,
全局解释器锁GIL 官方对于线程的介绍: 在 CPython 中,由于存在全局解释器锁,同一时刻只有一个线程可以执行 Python代码(虽然某些性能导向的库可能会去除此限制).如果你想让你的应用更好地 ...
- python删除线程,python线程基础
一 基本概念 1 并行和并发 1 并行,parallel 同时做某些事,可以互不干扰的同一时刻做几件事 如高速公路上的车道,同一时刻,可以有多个互不干扰的车运行 在同一时刻,每条车道上可能同时有车辆在 ...
- 8.Python基础学习笔记day8-正则表达式、网络编程、进程与线程
8.Python基础学习笔记day8-正则表达式.网络编程.进程与线程 一.正则表达式 ''' 1. [1,2,3,4]中任意取3个元素排列: A43 = 4x3x2 = 24itertools.pe ...
- Python基础 - 第九天 - paramiko模块、进程、线程
本篇内容: 1.paramiko模块使用 2.进程.线程简介 3.python调用线程的方法 4.join - 等待线程执行 5.守护线程 6.GIL - 全局解释器锁 7.互斥锁 8.信号量 9.事 ...
- python基础主要内容_python基础—python的介绍
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以 ...
最新文章
- Android的一些属性使用
- 阻塞 、非阻塞;同步、异步
- [Dart] Flutter开发中的几个常用函数
- 置信区间估计 预测区间估计_估计,预测和预测
- 详解Android Touch事件的传递机制
- 天猫公布618战报 苹果2分45秒破亿 你贡献了多少?
- Ubuntu18.04 melodic 安装与下载ROS
- android扫描局域网中的所有ip,NMAP扫描局域网内在线IP
- 【工具】IDEA打包jar包
- js数组操作方法 concat
- euclidean loss
- Cesium.js解析第一篇 Cartesian3
- 智慧景区人员定位方案
- 亿道丨三防平板丨加固平板丨三防工业平板丨航空航天应用
- 计算机电缆的表示方式,各种电缆型号的表示方法
- 解读《领域驱动设计 软件核心复杂性应对之道》(一)
- 数字电路学习——三极管的使用
- 简练软考知识点整理-项目配置审核
- 安科瑞能效管理系统在地下污水处理厂中的应用
- C++:STL教程从入门到精通
热门文章
- visual studio code python插件下载_visual studio code 的必装推荐插件plugin, vscode, vsc
- mysql 安装只有一半_记一次MySQL安装出现的坑爹问题。。。
- SpringMVC-开启静态资源访问权限
- Windows——桌面快捷键Ctrl+Z撤销的文件恢复解决方案
- Visual C++——定时刷新重绘窗口[WM_PAINT消息]解决方案
- DefaultSerializer requires a Serializable payload but received an object of type
- Vue.js-Day04-AM【父子组件通信(父传子、子传父)、动态组件、组件的生命周期、动画】
- Runtime底层原理--动态方法解析总结
- CTF——Web——MD5漏洞
- XSS学习-XSS挑战之旅(二)