python学习笔记——线程threading

1 线程threading

1.1 基本概述

也被称为轻量级的进程。

线程是计算机多任务编程的一种方式,可以使用计算机的多核资源。

线程死应用程序中工作的最小单元

1.2 线程特点

(1)进程的创建开销较大,线程创建开销较小

(2)一个进程中可以包含多个线程

(3)线程依附于进程的存在,多个线程共享进程的资源

(4)每个线程也拥有自己独特的特征,比如ID、指令集

注意:

(1)进程有独立的空间,数据安全性较高

(2)线程使用进程的资源,即一般使用全局变量的方式进行线程间通信,所以需要较复杂的同步互斥

(3)多个不相关的线程功能最好不要凑到一起形成线程

2 线程模块

Thread module emulating a subset of Java‘s threading model

2.1 线程模块之类

Thread,Event, Lock, Rlock, Condition, [Bounded]Semaphore, Timer, local。

2.2 线程模块之方法

threading.currentThread(): 返回当前的线程变量。 
threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。 
threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

2.3 线程模块之常量

threading.TIMEOUT_MAX 设置threading全局超时时间。

3 Thread类

3.1 Thread类创建方法

class Thread(builtins.object)的Methods defined here:

Thread(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)

group:线程组,目前没有实现,为了将来实现ThreadGroup类的扩展而设置的。

target:要执行的方法,run()方法调用的对象

name:线程名,在默认情况下,命名为Thread-N(N为最小的十进制数字)

args:元组参数

kwargs:字典参数

3.2 Thread类的实例方法:

start():启动线程

join(self, timeout=None):等待线程结束,阻塞线程直到调用此方法的线程终止或到达指定的的timeout

is_alive():返回线程是否在运行,运行返回True;

isAlive:等价于is_alive()

getName():获取线程名字

setName():设置线程名字,在threading.Thread()的帮助文档中没有该方法,其他资料上有。

is/setDaemon(bool): 获取/设置是后台线程(默认前台线程(False))。(在start之前设置)

  如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,主线程和后台线程均停止
       如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止
3.3

原文地址:https://www.cnblogs.com/gengyi/p/8724017.html

时间: 2024-08-06 11:51:50

python学习笔记——线程threading的相关文章

Python 学习笔记 - 线程(1)

这是第一篇Python多线程的学习笔记,看看什么是多线程,以及如何创建他. 之前Python写的脚本程序里面,我们用到的都是单进程单线程的操作. 例如 传统的单进程,单线程的程序 import time def f1(arg,):     time.sleep(5)     print(arg) for i in range(10):     f1(i) 然而很多时候,我们需要并发的同时处理多个任务,举个例子,一个播放软件在放电影的时候,他需要同时播放图形,声音,字幕,这个时候他就创建了一个播放

Python 学习笔记 - 线程(2)

前面学习了线程基本的概念和创建线程的两种方法,现在看看多线程如何处理竞争条件(racing condition)的问题. 比如说,下面的例子中 我使用了第二种创建的方式,自定义一个类,继承Thread类,然后自定义run()来执行我的方法.在这个run方法里面,每次都对全局变量加1 在主线程里面,他调用一个自己定义的函数,在这个函数里面创建了5000个线程:每个线程都加入一个列表,然后对每个对象都使用join,这是确保主线程等着直到所有子线程完成.最后输出结果 import time impor

python学习笔记(threading性能压力测试)

又是新的一周 延续上周的进度 关于多进程的学习 今天实践下 初步设计的接口性能压力测试代码如下: 1 #!/usr/bin/env python 2 # -*- coding: utf_8 -*- 3 4 import threading 5 import requests 6 import time 7 import re 8 from time import sleep 9 10 # -------接口性能测试配置------- 11 method = "post" 12 # 接口

Python 学习笔记 - 线程池

前面我们学校里如何创建多线程,当我们接到一个新的请求时,会创建一个线程,执行完毕之后又销毁掉这个线程.对于一些数目巨大,但是单个快速执行的任务,每个任务真正执行消耗的时间和线程创建销毁的时间可能都差不多.这样一来,线程的效率浪费的比较严重.因此可以考虑使用线程池的技术,预先创建一些空闲的线程,当他们接收具体任务的时候,就去直接执行了,执行完了也不销毁,接着执行下一个任务. Python里面,因为暂时还没有功能完备的线程池,因此这部分功能需要自己实现. 实现的基本原理是创建一个队列,把填充的任务数

python学习笔记(threading多线程)

博主昨天优化了接口框架想着再添加些功能 想到对接口的性能压力测试 在工作过程中之前都是使用的工具 如:loadrunner.jmeter 想着这次准备用python实现对接口的性能压力测试 首先要实现这个功能就要运用到python的threading模块 下面是自己学习摸索出来的代码: 1 #!/usr/bin/env python 2 # -*- coding: utf_8 -*- 3 4 import threading 5 import requests 6 from time impor

python学习笔记三---segmaphore信号量学习

# *-* coding=gb2312 *-* ''' 信号量semaphore 是一个变量,控制着对公共资源或者临界区的访问.信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数. 每次有一个线程获得信号量时,计数器-1.若计数器为0,其他线程就停止访问信号量,直到另一个线程释放信号量. ''' import threading import random import time class MyThread(threading.Thread): availableTables=[

python   学习笔记 (核心)

python    学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*-    //字符编码 不区分单引号和双引号,x='hello',x[0],x[-1]指最后一个字符,x[2:4]取子串, '''hello''' #hello三引号会保留文本输入时的换行符制表符等不需要转义,用于多行原样输入保存 'hello'+'world' #字符串拼接,'hello'*2 #字符串重复 help(fun) #帮助,help(module.met

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python