python之多线程并发处理模块-threading

thread:多线程的底层支持模块,一般不建议使用;

threading:对thread进行了封装,将一些线程的操作对象化,一般采用这种方法实现多线程编程

多线程实现有两种模式:

1.创建线程要执行的函数,把这个函数传递进Thread对象里

2.直接从Threading继承,新建一个新的类class,

threading模块:

threading.Thread类的重要函数

threading.currentThread(): 返回当前的线程变量。

threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。

threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

start()方法    启动线程活动

is_alive()或isAlive()方法    返回线程是否活动的

setDaemon()方法

isDaemon()方法

run()方法     用以表示线程活动的方法

getName()方法    返回线程名

setName()方法    设置线程名

join([time])方法    等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生

时间: 2024-10-21 14:19:47

python之多线程并发处理模块-threading的相关文章

python协程--asyncio模块(基础并发测试)

在高并发的场景下,python提供了一个多线程的模块threading,但似乎这个模块并不近人如意,原因在于cpython本身的全局解析锁(GIL)问题,在一段时间片内实际上的执行是单线程的.同时还存在着资源争夺的问题.python3.4之后引入了基于生成器对象的协程概念.也就是asyncio模块.除了asyncio模块,python在高并发这一问题还提出了另外一些解决方案,例如tornado和gevent都实现了类似的功能.由此,在方案选择上提供了更多的可能性.以下是threading模块和a

python多线程-thread模块

thread 和 threading 模块都能够实现 python 中的多线程,一般而言使用 threading 更加方便,因为 thread 有很多的缺点,例如当主线程结束后,所以子线程都会强制终止掉,没有警告也没有正常的清理工作.所以一般情况下更推荐使用 threading 模块.不过出于学习的目的,我们两个模块都来看一下. 在进行代码学习之前,我们要先来了解 python 的 GIL,也就是全局解释器锁.这个锁保证了同一时刻只能有一个线程运行. 等等……我明明要使用多线程,为什么这个锁却保

Python的多线程和多进程模块对比测试

本文主要对比测试Python的多线程和多进程模块在CPU类型和I/O的任务操作时的效率 一 测试CPU消耗类型任务 在一台多核CPU的服务器上执行多线程代码,理论上代码执行时会利用多余的CPU核心来提升性能.但是由于Python的GIL的存在,使用多线程来执行CPU繁重的任务,未必能得到性能提升.但是GIL又必不可少,因为在Python解释器中执行线程是不安全的,也就是说为了保证Python线程执行时的安全,Python提供了一个全局锁,同一时刻,只允许一个线程获得这个全解锁并执行. CPU消耗

11.python并发入门(part2 threading模块的基本使用)

一.在使用python多线程之前,你需要知道的. python的多线程中,实现并发是没有问题的,但是!!是无法实现真正的并行的. 这是因为python内部有个GIL锁(全局解释器锁),这个锁限制了在同一时刻,同一个进程中,只能有一个线程被运行!!! 二.threading模块的基本使用方法. 可以使用它来创建线程.有两种方式来创建线程. 1.通过继承Thread类,重写它的run方法. 2.创建一个threading.Thread对象,在它的初始化函数__init__中将可调用对象作为参数传入.

Python的多线程threading和多进程multiprocessing

python中的多线程就是在一个进程中存在着多个线程,在线程中,所有的线程都是共享资源的,线程之间的数据通信很简单.但是python仅支持一个线程的运行,因为python中存在一个全局解释器锁GIL(global interpreter lock),正是这个锁能保证同一时刻只有一个线程在运行,所以多线程依旧像是单线程的运行. GIL无疑就是一把对多线程有影响的全局锁,解决它对多线程的影响,不单单是释放GIL这么简单.GIL使得对象模型都是可以并发访问.GIL全局解释器锁解决多线程之间数据完整性和

Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例

由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二部分将第一部分的示例进行扩展,展示了如何在python中调用多线程的C模块:第三部分扩展了第二部分,增加了在C模块的线程中回调python的演示. 本文所用的环境为:64位Win7 + python 3.4 x86 + vs2010 一.windows下的C语言多线程程序 windows下多线程编程

python多线程库之threading

threading在低级的_thread模块上构建了更高级的线程接口. threading模块基于Java线程模型设计.不过Java中锁和条件变量是每个对象的基本行为,在python中却是单独的对象.python的Thread类行为是Java的Thread类行为的子集,目前尚不支持优先级.线程组,线程无法销毁.停止.暂停.恢复或中断.Java中Thread类的静态方法在Python中映射为模块级的函数. 原文地址:https://www.cnblogs.com/772933011qq/p/118

python基础 多线程threading join 守护线程setDeamon 递归锁Rlock

开篇大概介绍多线程与多进程区别,详细的理论区别自己可以在其它博客搜一下,这里不再赘述 同一进程下的多个线程共享内存数据,多个线程之间没有主次关系,相互之间可以操作:cpu执行的都是线程,默认程序会开一个主线程:进程是程序以及和程序相关资源的集合:某些场景下我们可以使用多线程来达到提高程序执行效率的目的,下面就多线程的一些基础知识做简要说明 简单的多线程 1 import threading, time 2 3 def test1(x): 4 time.sleep(5) 5 print(x**x)

Python实现多线程HTTP下载器

本文将介绍使用Python编写多线程HTTP下载器,并生成.exe可执行文件. 环境:windows/Linux + Python2.7.x 单线程 在介绍多线程之前首先介绍单线程.编写单线程的思路为: 解析url: 连接web服务器: 构造http请求包: 下载文件. 接下来通过代码进行说明. 解析url 通过用户输入url进行解析.如果解析的路径为空,则赋值为'/':如果端口号为空,则赋值为"80":下载文件的文件名可根据用户的意愿进行更改(输入'y'表示更改,输入其它表示不需要更