- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6、Python多线程.ppt
Python程序设计语言 Python多线程 Python程序设计语言 * Python多线程 多线程基础 函数式线程 类线程 常用线程函数 线程同步 线程锁 threading.Lock 条件变量 threading.Condition 信号量 threading.Semaphore 事件 threading.Event 同步队列 Queue Python进程 多线程基础 函数式线程 threading.Thread Python程序设计语言 * 多线程基础 类线程 threading.Thread Python程序设计语言 * 多线程基础 常用函数 threading.Thread run() 线程的功能实现 getName() 获得线程对象名称??????? setName() 设置线程对象名称 start() 启动线程 join([timeout]) 等待另一线程结束后再运行 setDaemon(bool) 守护线程 isDaemon() isAlive(),检查线程是否在运行中 threading.activeCount() threading.currentThread() Python程序设计语言 * 线程锁 RLock Lock Lock mutex = threading.Lock() 创建锁 mutex.acquire([timeout]) 锁定 mutex.release() 释放 RLock 封装了Lock 允许一个线程多次对其进行acquire,而且每一次的acquire操作必须有一个release操作与之对应,在所有的release操作完成之后,别的线程才能申请该RLock对象。 Python程序设计语言 * 线程锁 RLock Lock Python程序设计语言 * 条件变量 threading.Condition() 封装了Lock acquire() release() wait() 线程释放获得的线程锁,并进入“blocked”状态,直到另一个线程调用同一个条件变量的notify()方法来唤醒该线程。 notify() 显式唤醒”blocked”状态线程,否则就永远沉默。保证每一个wait()方法调用都有一个相对应的notify()调用,当然也可以调用notifyAll()方法以防万一。 Python程序设计语言 * 条件变量 threading.Condition() Python程序设计语言 * 条件变量 threading.Condition() Python程序设计语言 * 信号量 threading.Semaphore Semaphore管理一个内置的计数器 每当调用acquire()时内置计数器-1; 调用release() 时内置计数器+1; 计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。 Python程序设计语言 * 事件 threading.Event() Event内部包含了一个标志位,初始的时候为false 可以使用使用set()来将其设置为true; 或者使用clear()将其从新设置为false; 可以使用is_set()来检查标志位的状态; wait(timeout=None),用来阻塞当前线程,直到event的内部标志位被设置为true或者timeout超时。如果内部标志位为true则wait()函数理解返回。 Python程序设计语言 * 事件 threading.Event() Python程序设计语言 * 同步队列 Queue Queue是进程和线程安全的。 使用Queue对象可以实现多个生产者和多个消费者形成的FIFO的队列,生产者将数据依次存入队列,消费者依次从队列中取出数据。 Python程序设计语言 * Python多进程 threading 和 multiprocessing multiprocessing是Python中的多进程管理包。 Process对象与Thread对象的用法相同,也有start(), run(), join()的方法。 multiprocessing包中也有Lock/Event/Semaphore/Condition类。 multiprocessing的很大一部份与threading使用同一套API,只不过换到了多进程的情境。 Python虚拟机(PVM) Python使用的是系统原生的线程/进程 GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问 Python程序设计语言 * P
原创力文档


文档评论(0)