`
qindongliang1922
  • 浏览: 2188479 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117659
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126068
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60013
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71398
社区版块
存档分类
最新评论

Python3.4线程入门

阅读更多
比较成熟的编程语言,基本上都有对线程的支持,而python也不例外,下面散仙来看下python里面对几个线程比较的类或方法:

    python多线程编程,一般使用thread和threading模块。thread模块想对较底层,threading模块对thread模块进行了封装,更便于使用。所有,通常多线程编程使用threading模块。

(一)threading模块

Thread 线程类,这是我们用的最多的一个类,你可以指定线程函数执行或者继承自它都可以实现子线程功能;
Timer与Thread类似,但要等待一段时间后才开始运行;
Lock 锁原语,这个我们可以对全局变量互斥时使用;
RLock 可重入锁,使单线程可以再次获得已经获得的锁;
Condition 条件变量,能让一个线程停下来,等待其他线程满足某个“条件”;
Event 通用的条件变量。多个线程可以等待某个事件发生,在事件发生后,所有的线程都被激活;
Semaphore为等待锁的线程提供一个类似“等候室”的结构;
BoundedSemaphore 与semaphore类似,但不允许超过初始值;
Queue:实现了多生产者(Producer)、多消费者(Consumer)的队列,支持锁原语,能够在多个线程之间提供很好的同步支持。


(1)threading.Thread类
getName(self) 返回线程的名字
isAlive(self) 布尔标志,表示这个线程是否还在运行中
isDaemon(self) 返回线程的daemon标志
join(self, timeout=None) 程序挂起,直到线程结束,如果给出timeout,则最多阻塞timeout秒
run(self) 定义线程的功能函数
setDaemon(self, daemonic) 把线程的daemon标志设为daemonic
setName(self, name) 设置线程的名字
start(self) 开始线程执行

(2)threading.Queue类
Queue队列
LifoQueue后入先出(LIFO)队列
PriorityQueue 优先队列


下面,来看下在python里面创建使用线程的三种方法:
1,使用_thread模块来创建:

import  _thread
import  time
import  threading

def hello(index):
     for v in range(5):
        time.sleep(2)
        print("线程",v,index)




def test():

    t1=_thread.start_new_thread(hello , (1,))
    t2=_thread.start_new_thread(hello , (2,))



#启动
test()
#等待子线程执行完任务
time.sleep(2000)



2,使用threading.Thread类来创建:

import  threading
import  time


#打印当前线程的名字
def z():
    print("线程名: "+threading.current_thread().getName())



t1=threading.Thread(target=z,name="my")
t1.start()
#t1.join()


3,继承线程类来实现的方式:
import threading
import  time
import  random




class MyThread(threading.Thread):

    def __init__(self,name):
        threading.Thread.__init__(self,name=name)
    def run(self):
        for i in range(5):
            time.sleep(random.randint(1,10))
            print("我是",self.name,"线程",i)



a=MyThread("A")
# a.setDaemon(True)
a.start()
b=MyThread("B")
# b.setDaemon(True)
b.start()
a.join()
b.join()
print("主线程退出,end!")




三种方式,第一种比较偏底层,后面两种用着都不错,看个人情况了,最合适的就是最好的。





0
0
分享到:
评论

相关推荐

    python2.7与python3.4帮助手册

    总之,"Python2.7与Python3.4帮助手册"是学习Python的宝贵资源,无论你是初学者还是有经验的开发者,都可以从中受益。通过查阅这些手册,你可以系统地学习Python语言,理解其核心概念,并探索丰富的标准库,进一步...

    Python-3.4-入门指南

    《Python-3.4-入门指南》是一份面向初学者的官方文档,内容涵盖了Python编程语言的基础知识和高级特性。作为入门指南,它被设计为循序渐进地带领新手了解和掌握Python编程的基础。文档从基础的解释器调用开始,逐步...

    Python-用于在Python34中进行协程驱动的基于异步的泛型编程的小工具库

    Python-用于在Python34中进行协程驱动的基于异步的泛型编程的小工具库,这个项目主要是为了解决Python 3.4版本中的异步编程问题,特别是在处理I/O密集型任务时提高程序效率。协程是一种高级形式的多任务处理,允许...

    Python编程入门经典

    3.4 本章小结 44 3.5 习题 44 第Ⅱ部分 Python语言和标准库 第4章 做出决策 49 4.1 比较两个值是否相等 49 4.2 比较两个值是否不相等 51 4.3 比较两个值的大小 51 4.4 对真值和假值取反 53 4.5 观察多个比较运算的...

    Python库 | ModernGL-2.2.0.win32-py3.4.exe

    这个资源"ModernGL-2.2.0.win32-py3.4.exe"是一个针对Python 3.4的Windows 32位版本的安装程序,用于在Python环境中安装ModernGL库的2.2.0版。 ModernGL库的主要特点包括: 1. **面向对象的API**:与传统的基于C/...

    python入门教程pdf

    ### Python入门教程知识点总结 #### 一、Python基础概述 **1.1 使用Python解释器** - **调用Python解释器** - **参数传递**:了解如何在启动Python解释器时传递参数。 - **交互模式**:探索Python解释器的交互...

    python-guide python引言

    ### Python入门指南知识点详解 #### 一、起步篇:安装与配置 **1.1 选择解释器** 在选择Python解释器时,本指南推荐使用Python 2.7.x版本,除非有特殊需求。对于新模块开发,同样建议首先基于Python 2.7.x进行,...

    Python实现的Google IP 可用性检测脚本 - 爱捉吧1

    在描述中提到,该脚本适用于Python 3.4或更高版本,它有两个主要功能:测试Google搜索服务的IP和Google App Engine (GAE)服务的IP。用户可以通过修改脚本中定义的`APP_ID`和`APP_PATH`变量来配置GAE服务的测试。脚本...

    Python 核心编程 第二版

    第2部分则提供了各种高级主题来展示可以使用Python做些什么,包括正则表达式、网络编程、网络客户端编程、多线程编程、图形用户界面编程、 Web编程、数据库编程、扩展Python 和一些其他材料。  本书适合Python初学...

    python 学习视频

    ##### 3.4 Python开发仿百度搜索引擎 - **知识点概述**:通过Python实现一个简易版的搜索引擎。 - **关键内容**: - 网页爬虫技术; - 文档索引建立; - 查询算法优化; - 结果排序与展示。 - **实践意义**:...

    异步IO:Python中的并发编程革命

    - **asyncio模块**:自Python 3.4版本起,`asyncio`模块成为了Python标准库的一部分,用于编写单线程并发代码。它提供了一系列的概念和工具,如事件循环、协程、任务和传输等。 - **安装与基本使用**: ```python ...

    Python中asyncio与aiohttp入门教程

    在Python中,异步编程的核心库是asyncio,它从Python 3.4版本开始集成到标准库中。asyncio特别适用于网络和IO密集型任务,例如在服务器端的Web应用中,可以使用单线程来处理多用户的并发请求。 在使用asyncio时,...

    干货 十分钟带你从入门到进阶python爬虫.docx

    ### 干货:十分钟带你从入门到进阶Python爬虫 #### 一、引言 在数字时代,网络数据成为了宝贵的资源。对于开发者而言,掌握高效的数据抓取技术至关重要。Python作为一种灵活强大的编程语言,拥有丰富的库支持,是...

    《Python学习手册_第3版》PDF版本下载.txt

    - Web开发框架(如Flask、Django等)入门。 - 数据分析与可视化工具(如Pandas、Matplotlib等)。 - 机器学习库(如Scikit-Learn)的基础应用。 #### 3.4 最佳实践 - 代码调试技巧。 - 版本控制工具Git的使用。 - ...

    Python核心编程第二版

     第2章 快速入门   2.1 程序输出,print语句及“Hello World!”   2.2 程序输入和raw_input()内建函数   2.3 注释   2.4 操作符   2.5 变量和赋值   2.6 数字   2.7 字符串   2.8 列表...

    EliteMerchant:来自不同来源的精英数据收集软件

    安装Python 3.4 ( ) 安装PyQt5 ( ) 一些系统还需要软件包libsqlite3-0和sqlite3 可选:下载EDCE以自动下载市场数据( ) EDCE和构建安装程序需要请求python软件包 在/ src中运行python3 ./main.py 如果...

    Arduino-with-Python:将传感器数据发送到Python以进行处理和可视化。 使用Python通过Arduino控制LED,电机,伺服器等。 使用USB和蓝牙

    该项目提供了一个Python类,其中包含入门的有用功能。 它还包含一个可视化类,用于展示从Arduino获取的存储数据。 在更高版本中将隐含更多功能和类。 先决条件 您将需要和才能使用提供的文件。 另外,您将需要安装...

    用Python写网络爬虫PDF-理查德 劳森(Richard Lawson)

    3.4 本章小结 55 第4章 并发下载 57 4.1 100万个网页 57 4.2 串行爬虫 60 4.3 多线程爬虫 60 4.3.1 线程和进程如何工作 61 4.3.2 实现 61 4.3.3 多进程爬虫 63 4.4 性能 67 4.5 本章小结 68 第5章 动态...

Global site tag (gtag.js) - Google Analytics