城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

Python多线程教程

4月4日 小米粒投稿
  在这个Python多线程教程中,您将看到创建线程的不同方法,并学习实现线程安全操作的同步。这篇文章的每个部分都包含一个示例和示例代码,以逐步解释该概念。
  顺便说一下,多线程是几乎所有高级编程语言都支持的软件编程的核心概念。因此,您应该知道的第一件事是:什么是线程以及多线程在计算机科学中意味着什么。什么是计算机科学中的线程?
  在软件编程中,线程是具有独立指令集的最小执行单元。它是进程的一部分,并在共享程序的可运行资源(如内存)的相同上下文中运行。一个线程有一个起点、一个执行顺序和一个结果。它有一个指令指针,用于保存线程的当前状态并控制接下来按什么顺序执行。什么是计算机科学中的多线程?
  一个进程并行执行多个线程的能力称为多线程。理想情况下,多线程可以显着提高任何程序的性能。而且Python多线程机制非常人性化,您可以快速学习。多线程的优点多线程可以显着提高多处理器或多核系统的计算速度,因为每个处理器或核同时处理一个单独的线程。多线程允许程序在一个线程等待输入时保持响应,同时另一个线程运行GUI。此陈述适用于多处理器或单处理器系统。进程的所有线程都可以访问其全局变量。如果一个全局变量在一个线程中发生变化,那么它对其他线程也是可见的。线程也可以有自己的局部变量。多线程的缺点在单处理器系统上,多线程不会影响计算速度。由于管理线程的开销,性能可能会下降。访问共享资源时需要同步以防止互斥。它直接导致更多的内存和CPU利用率。多线程增加了程序的复杂性,从而也使得调试变得困难。它增加了潜在死锁的可能性。当线程无法定期访问共享资源时,它可能会导致饥饿。应用程序将无法恢复其工作。
  到目前为止,您已经阅读了有关线程的理论概念。如果您不熟悉Python,我们建议您阅读我们的30个快速Python编码技巧,它们也可以帮助您编写Python多线程代码。我们的许多读者都使用了这些技巧,并且能够提高他们的编码技能。Python多线程模块
  Python提供了两个模块来在程序中实现线程。模块和线程模块。
  注意:供您参考,Python2。x曾经有thread模块。但它在Python3。x中被弃用并重命名为thread模块以实现向后兼容性。
  两个模块的主要区别在于模块em线程em将线程实现为函数。另一方面,threading模块提供了一种面向对象的方法来启用线程创建。如何使用线程模块创建线程?
  如果你决定在你的程序中应用thread模块,那么使用下面的方法来产生线程。语法thread。startnewthread(function,args〔,kwargs〕)复制代码
  这种方法对于创建线程非常有效和直接。您可以使用它在Linux和Windows中运行程序。
  此方法启动一个新线程并返回其标识符。它将使用传递的参数列表调用指定为函数参数的函数。当function返回时,线程将静默退出。
  这里,args是一个参数元组;使用空元组调用function不带任何参数。可选的kwargs参数指定关键字参数的字典。
  如果function因未处理的异常而终止,则会打印堆栈跟踪,然后线程退出(它不会影响其他线程,它们会继续运行)。使用以下代码了解有关线程的更多信息。基本的Python多线程示例Python多线程示例。1。使用递归计算阶乘。2。使用线程调用阶乘函数。fromthreadimportstartnewthreadfromtimeimportsleepthreadId1线程计数器waiting22秒等待的时间deffactorial(n):globalthreadIdrc0ifn1:basecaseprint({}:{}。format(Thread,threadId))threadId1rc1else:returnNumbernfactorial(n1)recursivecallprint({}!{}。format(str(n),str(returnNumber)))rcreturnNumberreturnrcstartnewthread(factorial,(5,))startnewthread(factorial,(4,))print(Waitingforthreadstoreturn。。。)sleep(waiting)复制代码
  您可以在本地Python终端中运行上述代码,也可以使用任何在线Python终端。执行此程序后,它将产生以下输出。
  程序输出Python多线程:程序输出等待线程返回。。。Thread:11!12!23!64!245!120Thread:21!12!23!64!24复制代码如何使用线程模块创建线程?
  最新的threading模块比上一节讨论的遗留thread模块提供了丰富的特性和更好的线程支持。threading模块是Python多线程的一个很好的例子。
  threading模块结合了thread模块的所有方法,并暴露了一些额外的方法threading。activeCount():它找到总数。活动线程对象。threading。currentThread():您可以使用它来确定调用方线程控制中的线程对象数量。threading。enumerate():它将为您提供当前活动的线程对象的完整列表。
  除了上述方法,threading模块还提供了Thread类,你可以尝试实现线程。它是Python多线程的面向对象的变体。
  Thread类发布以下方法。
  类方法
  方法说明
  run():
  它是任何线程的入口点函数。
  start():
  start()方法在run方法被调用时触发一个线程。
  join(〔time〕):
  join()方法使程序能够等待线程终止。
  isAlive():
  isAlive()方法验证活动线程。
  getName():
  getName()方法检索线程的名称。
  setName():
  setName()方法更新线程的名称。使用线程模块实现线程的步骤
  您可以按照以下步骤使用threading模块实现一个新线程。从Thread类构造一个子类。覆盖init(self〔,args〕)方法以根据要求提供参数。接下来,重写run(self〔,args〕)方法来编写线程的业务逻辑。
  一旦定义了新的Thread子类,就必须实例化它以启动一个新线程。然后,调用start()方法来启动它。它最终会调用run()方法来执行业务逻辑。示例创建一个线程类来打印日期Python多线程示例打印当前日期。1。使用threading。Thread类定义子类。2。实例化子类并触发线程。importthreadingimportdatetimeclassmyThread(threading。Thread):definit(self,name,counter):threading。Thread。init(self)self。threadIDcounterself。namenameself。countercounterdefrun(self):print(Startingself。name)printdate(self。name,self。counter)print(Exitingself。name)defprintdate(threadName,counter):datefields〔〕todaydatetime。date。today()datefields。append(today)print({}〔{}〕:{}。format(threadName,counter,datefields〔0〕))创建新线程thread1myThread(Thread,1)thread2myThread(Thread,2)启动新线程thread1。start()thread2。start()thread1。join()thread2。join()print(ExitingtheProgram!!!)复制代码
  程序输出StartingThreadThread〔1〕:20210722ExitingThreadStartingThreadThread〔2〕:20210722ExitingThreadExitingtheProgram!!!复制代码Python多线程同步线程
  threading模块具有实现锁定的内置功能,允许您同步线程。需要锁定来控制对共享资源的访问,以防止损坏或丢失数据。
  您可以调用Lock()方法来应用锁,它返回新的锁对象。然后,您可以调用锁对象的获取(阻塞)方法来强制线程同步运行。
  可选的阻塞参数指定线程是否等待获取锁。CaseBlocking0:如果获取锁失败,线程将立即返回零值,如果锁成功则返回一。CaseBlocking1:线程阻塞并等待锁被释放。
  锁对象的release()方法用于在不再需要时释放锁。
  仅供参考,Python的内置数据结构(例如列表、字典)是线程安全的,因为它具有用于操作它们的原子字节码的副作用。在Python中实现的其他数据结构或基本类型(如整数和浮点数)没有这种保护。为了防止同时访问一个对象,我们使用了一个Lock对象。锁定的多线程示例Python多线程示例来演示锁定。1。使用threading。Thread类定义子类。2。实例化子类并触发线程。3。在线程的run方法中实现锁。importthreadingimportdatetimeexitFlag0classmyThread(threading。Thread):definit(self,name,counter):threading。Thread。init(self)self。threadIDcounterself。namenameself。countercounterdefrun(self):print(Startingself。name)获取锁同步线程threadLock。acquire()printdate(self。name,self。counter)为下一个线程释放锁threadLock。release()print(Exitingself。name)defprintdate(threadName,counter):datefields〔〕todaydatetime。date。today()datefields。append(today)print({}〔{}〕:{}。format(threadName,counter,datefields〔0〕))threadLockthreading。Lock()threads〔〕创建新线程thread1myThread(Thread,1)thread2myThread(Thread,2)启动新线程thread1。start()thread2。start()添加线程到线程列表threads。append(thread1)threads。append(thread2)等待所有线程完成forthreadinthreads:thread。join()print(ExitingtheProgram!!!)复制代码
  程序输出StartingThreadThread〔1〕:20210722ExitingThreadStartingThreadThread〔2〕:20210722ExitingThreadExitingtheProgram!!!
投诉 评论 转载

纳尼?为了让你用val,Scala连if的语法都改了在之前的文章《Java程序员如何写出更加函数式的代码?》中,我们说,写出更健壮的代码的方式之一就是不用var编程。在《ProgramminginScala》的第7章,作者……未来医生白皮书发布,数字医疗融合患者素养提升多元医疗场景成为今天,《未来医生白皮书》发布,提出了全球医疗发展的三大趋势:数字技术与医疗手段的深度融合,患者健康素养的全面提升,多元化医疗场景对医护人员能力提出全新挑战。数字技术与医疗手段深……不做未来互联网上的老年人这几天老年人的互联网生活颇受关注,国家发改委公众号发文称,发改委正研究推进互联网门户网站适老化与无障碍改造工作,目前已有多款APP推出功能简单的长辈版、文字更大的关怀模式等;中……5G将颠覆消费音乐的方式,真正做到用音乐连接一切每经记者:董兴生每经编辑:宋红国际唱片业协会发布的《2020年全球音乐报告》显示,全球录制音乐市场规模在2020年增长了7。4,总收入为216亿美元,已是连续第六年保持上……8个免费实用,带你解锁新知识的软件,让你悄悄变强大好的app不仅用得爽,还能提升个人能力。今天分享8个APP,不仅从此细微之处治愈你的心灵,还能让你学到不少知识。只有悄悄努力,才能惊艳所有人!得言酷爱语录的句子控必……小孩和大人圈子不同?马化腾终于解释了为什么小孩不玩微信自从微信诞生以来,人们从来没有停止过将它与QQ进行对比。不同的产品对应不同的人群,久而久之小孩子玩QQ,大人们都在用微信,积极成为中国互联网的公认的现象存在。而这背后又存在什么……空调是上个世纪伟大的发明,也有人说是人类最自私的发明,自己凉如果你觉得自私,可以反向安装!把冷气排向屋外,把热气留给自己!〔赞〕〔赞〕〔赞〕〔赞〕〔赞〕〔我想静静〕〔我想静静〕〔我想静静〕〔我想静静〕大家好,我是专注家居和装修知识……住友建立丙烯酸树脂化学回收中试工厂与传统的原生树脂相比,热解丙烯酸树脂并将其再生为MMA单体,将在产品的整个产品生命周期内减少60以上的温室气体排放。友化学计划在位于日本爱媛县新居滨市的爱媛工厂建设丙烯酸……OKR,真的适合你的企业吗?推动OKR前,要先了解的3件事OKR,真的适合你的企业吗?推动OKR前,要先了解的3件事企业绩效考核常采用的目标与关键结果(OKR,ObjectivesandKeyResults)正是因此而生,这款目……宋PLUS新能源混动车带来不一样的感受最满意的就是宋plus新能源的家族式前脸造型很有感觉,非常的帅气,特别的好看。动力充足,虽然是混动车,但是动力随传随到的感觉,运动模式下能够有很明显的推背感。油耗方面确实很省,……微信iOS版又更新了这几个实用新功能果粉之家,专业苹果手机技术研究十年!您身边的苹果专家上周五,微信发布了iOS版8。0。10正式版的更新。主要更新了两个新功能:一个新增了AppleWatch支付功能,另一……Python多线程教程在这个Python多线程教程中,您将看到创建线程的不同方法,并学习实现线程安全操作的同步。这篇文章的每个部分都包含一个示例和示例代码,以逐步解释该概念。顺便说一下,多线程……
iPhone13系列配置曝光,影像有看点,小刘海实锤元宇宙概念近7个交易日大涨15,如何寻找主题基金?助听器分几个功率?比特币行情再次上扬荣耀Magic4概念机直面全面屏搭配双OIS光学防抖,还有1小米12谍照细节被爆,双曲面2。75D屏,R角和谐了蚂蚁金服再度亮剑A股,单日揽入一上市公司3。4股权小米12Pro长什么样?小米12Pro保护壳曝光信也科技王春平价值观在前的人工智能算法发展为什么月球上只能看到地球太阳?小米12对标iPhone?小屏旗舰之战谁能成为赢家微软全球资深副总裁大中华区董事长兼首席执行官侯阳微软将助力四
如何在上新建播放列表重启番外平妖往事剧情介绍平妖往事讲的是谁的故事?王思聪出国留学前王健林曾嘱咐了他4个字振兴中华2021年高考作文素材积累做一个美丽的中国人晨枫中国涨了点军费,美国跳,印度叫学生关节扭伤热敷的好处1985年,南京军区下辖3个集团军,军长都是谁?授予什么军衔书房儿童房一体效果图让小孩拥有属于自己的空间小宝宝如何科学选择衣服呵护美丽家用取暖哪种好家用取暖类型对比介绍详解一些经典笑话

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁