python标准库介绍——31 threading 模块详解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3 - 1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``thread`` 模块相同, 只有你在编译解释器时打开了线程支持才可以使用它 . 你只需要继承 / / Thread / / 类, 定义好 ``run`` 方法, 就可以创建一 个新的线程. 使用时首先创建该类的一个或多个实例, 然后调用 ``start`` 方法. 这样每个实例的 ``run`` 方法都会运行在它自的线程里. = = = = Example 3 - 1. 使用 threading 模块 = = = = [eg - 3 - 1 ] ``` File : threading - example - 1.py import threading import time, random class Counter: def _ _init_ _( self ): self .lock = threading.Lock() self .value = 0 def increment( self ): self .lock.acquire() # critical section self .value = value = self .value + 1 self .lock.release() return value counter = Counter() class Worker(threading.Thread): def run( self ): for i in range ( 10 ): # pretend we're doing something that takes 10?00 ms value = counter.increment() # increment global counter time.sleep(random.randint( 10 , 100 ) / 1000.0 ) print self .getName(), "-- task" , i, "finished" , value # # try it for i in range ( 10 ): Worker().start() # start a worker * B * Thread - 1 - - task 0 finished 1 Thread - 3 - - task 0 finished 3 Thread - 7 - - task 0 finished 8 Thread - 1 - - task 1 finished 7 Thread - 4 - - task 0 Thread - 5 - - task 0 finished 4 finished 5 Thread - 8 - - task 0 Thread - 6 - - task 0 finished 9 finished 6 ... Thread - 6 - - task 9 finished 98 Thread - 4 - - task 9 finished 99 Thread - 9 - - task 9 finished 100 * b * ``` [Example 3 - 1 #eg-3-1] 使用了 //Lock// 对象来在全局 //Counter// 对象里创建临界区 (critical section). 如果删除了 ``acquire`` 和 ``release`` 语句, 那么 ``Counter`` 很可能不会到达 100. |
如果觉得对您有帮助,麻烦您点一下推荐,谢谢!
好记忆不如烂笔头
好记忆不如烂笔头
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术