广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python多线程应用技巧该怎么用
  • 229
分享到

Python多线程应用技巧该怎么用

2023-06-17 15:06:15 229人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天就跟大家聊聊有关python多线程应用技巧该怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在编程语言中,多线程的应用是一个比较重要的应用技术,那么Python中的多线程应用

今天就跟大家聊聊有关python多线程应用技巧该怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

编程语言中,多线程的应用是一个比较重要的应用技术,那么Python中的多线程应用同样也是非常重要的。线程相对进程来说是“轻量级”的,操作系统用较少的资源创建和管理线程。程序中的线程在相同的内存空间中执行,并共享许多相同的资源。

在Python多线程中如何创建一个线程对象

如果你要创建一个线程对象,很简单,只要你的类继承threading.Thread,然后在__init__里首先调用threading.Thread的__init__方法即可

import threading    class mythread(threading.Thread):    def __init__(self, threadname):    threading.Thread.__init__(self, name = threadname)    …

这才仅仅是个空线程,我可不是要他拉空车的,他可得给我干点实在活。很简单,重写类的run()方法即可,把你要在线程执行时做的事情都放到里面:

import threading    import time    class mythread(threading.Thread):    def __init__(…):  ….    def run(self):    for i in range(10):    print self.getName, i  time.sleep(1)

以上代码我们让这个线程在执行之后每隔1秒输出一次信息到屏幕,10次后结束getName()是threading.Thread类的一个方法,用来获得这个线程对象的name。还有一个方法setName()当然就是来设置这个线程对象的name的了。

如果要创建一个线程,首先就要先创建一个线程对象:

mythreadmythreadmythread1 = mythread(’mythread 1′)

一个线程对象被创建后,他就处于“born”(诞生状态),如何让这个Python多线程对象开始运行呢?只要调用线程对象的start()方法即可:

mythread1.start()

现在线程就处于“ready”状态或者也称为“runnable”状态。

奇怪吗?不是已经start了吗?为什么不称为“running”状态呢?其实是有原因的。因为我们的计算机一般是不具有真正并行处理能力的。我们所谓的Python多线程只是把时间分成片段,然后隔一个时间段就让一个线程执行一下,然后进入“sleeping ”状态,然后唤醒另一个在“sleeping”的线程,如此循环runnable->sleeping->runnable… ,只是因为计算机执行速度很快,而时间片段间隔很小,我们感受不到,以为是同时进行的。所以说一个线程在start了之后只是处在了可以运行的状态,他什么时候运行还是由系统来进行调度的。

那一个线程什么时候会“dead”呢?一般来说当线程对象的run方法执行结束或者在执行中抛出异常的话,那么这个线程就会结束了。系统会自动对“dead”状态线程进行清理。如果一个线程t1在执行的过程中需要等待另一个线程t2执行结束后才能运行的话那就可以在t1在调用t2的join()方法:

….    def t1(…):    …    t2.join()    …

这样t1在执行到t2.join()语句后就会等待t2结束后才会继续运行。

但是假如t1是个死循环的话那么等待就没有意义了,那怎么办呢?可以在调用t2的join()方法的时候给一个浮点数做超时参数,这样这个线程就不会等到花儿也谢了了。我等你10s,你不回来我还不允许我改嫁啊?

def t1(…):    …    t2.join(10)    …

如果一个进程的主线程运行完毕而子线程还在执行的话,那么进程就不会退出,直到所有子线程结束为止,如何让主线程结束的时候其他子线程也乖乖的跟老大撤退呢?那就要把那些不听话的人设置为听话的小弟,使用线程对象的setDaemon()方法,参数为bool型。True的话就代表你要听话,我老大(主线程)扯呼,你也要跟着撤,不能拖后腿。如果是False的话就不用那么听话了,老大允许你们将在外军命有所不受的。需要注意的是setDaemon()方法必须在线程对象没有调用start()方法之前调用,否则没效果。

t1 = mythread(’t1′)    print t1.getName(),  t1.isDaemon()    t1.setDaemon(True)    print t1.getName(),  t1.isDaemon()    t1.start()  print   ‘main thread exit’

当执行到 print ‘main thread exit’后,主线程就退出了,当然t1这个线程也跟着结束了。但是如果不使用t1线程对象的setDaemon()方法的话,即便主线程结束了,还要等待t1线程自己结束才能退出进程。isDaemon()是用来获得一个线程对象的Daemonflag状态的。

如何来获得与Python多线程有关的信息呢?获得当前正在运行的线程的引用:

running = threading.currentThread()

获得当前所有活动对象(即run方法开始但是未终止的任何线程)的一个列表:

threadlist = threading.enumerate()

获得这个列表的长度:

threadcount = threading.activeCount()

查看一个线程对象的状态调用这个线程对象的isAlive()方法,返回1代表处于“runnable”状态且没有“dead”:

threadflag = threading.isAlive()

看完上述内容,你们对Python多线程应用技巧该怎么用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: Python多线程应用技巧该怎么用

本文链接: https://www.lsjlt.com/news/290102.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python多线程应用技巧该怎么用
    今天就跟大家聊聊有关Python多线程应用技巧该怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在编程语言中,多线程的应用是一个比较重要的应用技术,那么Python中的多线程应用...
    99+
    2023-06-17
  • Python技巧之四种多线程应用分享
    目录1.使用threading模块2.使用concurrent.futures模块3.使用multiprocessing模块4.使用asyncio模块在Python中,多线程是实现并...
    99+
    2023-05-12
    Python多线程应用 Python多线程
  • python多线程怎么应用
    本篇内容主要讲解“python多线程怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python多线程怎么应用”吧!一、首先定义一个封装类,主要是保证PyGILState_Ensure, ...
    99+
    2023-06-17
  • android 多线程技术应用
    多线程案例——计时器 这个案例中,屏幕启动之后,进入如图所示的界面。 屏幕上有一个文本框用于显示逝去的时间,此外还有一个“停止计时”按钮。案例的用例图如图所示。  能...
    99+
    2022-06-06
    技术应用 多线程 线程 Android
  • python多线程怎么用
    python多线程的使用方法:1、导入threading模块;2、创建线程对象;3、启动线程;4、等待线程执行完毕;5、多个线程同时执行;6、线程同步和通信。Python多线程是指同时使用多个线程执行代码,以实现并发执行任务的目的。Pyth...
    99+
    2023-11-20
    python 多线程
  • Python多线程怎么使用
    本篇内容主要讲解“Python多线程怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python多线程怎么使用”吧!Python 多线程多线程类似于同时执行多个不同程序,多线程运行有如下优...
    99+
    2023-06-21
  • Java 多线程同步技巧,Windows 平台适用!
    在 Java 中,多线程编程是很常见的,但多线程编程涉及到线程安全问题,需要使用同步技巧来保证线程安全。本文将介绍 Java 中的几种同步技巧,并提供适用于 Windows 平台的演示代码。 一、synchronized 关键字 sync...
    99+
    2023-09-09
    同步 windows 教程
  • Python多进程怎么应用
    这篇文章主要讲解了“Python多进程怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python多进程怎么应用”吧!并行和串行计算想象一下,你有一个...
    99+
    2022-10-19
  • 程序员应该知道的vuex冷门小技巧(超好用)
    目录当访问某个数据项嵌套太深了,优化一下访问的方式mapState的使用步骤使用原理如果vuex中的数据与本组件内的数据名相同,怎么办呢使用全局state那如果是分模块化呢如何使用m...
    99+
    2022-11-13
  • Python多线程是什么及怎么用
    本篇内容介绍了“Python多线程是什么及怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是线程?...
    99+
    2022-10-19
  • Java多线程和IO流怎么应用
    这篇文章主要介绍“Java多线程和IO流怎么应用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java多线程和IO流怎么应用”文章能帮助大家解决问题。Java多线程和流的应用最近看到了一个例子,是使...
    99+
    2023-07-06
  • 怎么在python多线程中使用join
    怎么在python多线程中使用join?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、...
    99+
    2023-06-14
  • Python多线程中Queue模块怎么用
    这篇文章将为大家详细讲解有关Python多线程中Queue模块怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。queue介绍queue是python中的标准库,俗称队列,可以直接import 引用,在...
    99+
    2023-06-20
  • 怎么在python中利用多进程取代多线程
    怎么在python中利用多进程取代多线程?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动...
    99+
    2023-06-14
  • Python多线程具体应用的方法
    本篇内容介绍了“Python多线程具体应用的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!为了利用多核处理器,看过很多文档,研究很多py...
    99+
    2023-06-17
  • java多线程在项目中怎么应用
    Java多线程在项目中的应用主要有以下几个方面:1. 提高程序的并发性:多线程可以同时处理多个任务,提高程序的并发性,使得程序的执行...
    99+
    2023-09-29
    java
  • C#多线程怎么用
    这篇文章主要为大家展示了“C#多线程怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#多线程怎么用”这篇文章吧。一、基本概念1、进程首先打开任务管理器,查看当前运行的进程:从任务管理器里面...
    99+
    2023-06-22
  • Java多线程怎么用
    这篇文章主要介绍了Java多线程怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、概念1.进程1进程:是一个正在进行中的程序,每一个进程执行都有一个执行顺序,该顺序是一...
    99+
    2023-06-17
  • Python实用技巧有哪些及怎么用
    今天小编给大家分享一下Python实用技巧有哪些及怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。all or anyP...
    99+
    2023-06-29
  • Spring多线程怎么使用
    这篇“Spring多线程怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring多线程怎么使用”文章吧。为什么使用...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作