关于Python的Thread线程模块详解

 更新时间:2023年05月18日 09:23:10   作者:FLy_鹏程万里  
这篇文章主要介绍了关于Python的Thread线程模块详解,进程是程序的一次执行,每个进程都有自己的地址空间、内存、数据栈以及其他记录其运行的辅助数据,需要的朋友可以参考下

Python线程与进程

进程:进程是程序的一次执行,每个进程都有自己的地址空间、内存、数据栈以及其他记录其运行的辅助数据。

线程:所有的线程运行在同一个进程中,共享相同的运行环境。线程有开始顺序执行和结束三个部分。

举例说明:

(1)计算机的核心是CPU,它承担了所有的计算任务,它就像一座工厂,时刻在运行。

(2)假定工厂的电力有限,一次只能供给一个车间使用,也就是说,一个车间开工的时候,其他工厂度必须要停下来。其背后的意思就是,单个CPU一次只能运行一个任务。

(3)进程就好比工厂的车间,它代表CPU所能处理的单个任务,任意时刻,CPU总是运行一个进程,其他进程处于非运行状态。

(4)一个车间里,可以有很多工人,他们协同完成一个任务。

(5)线程就好比车间里的工人,一个进程可以包括多个线程。

Python thread模块

python threading模块

python中线程的使用

python中使用线程的方法有两种:函数、通过类来包装线程对象

(1)函数式:调用thread模块中的start_new_thread()函数来产生新的线程。如下例:

import thread
import time
def fun1():
    print('Hello world!%s',time.ctime())
def main():
    thread.start_new_thread(fun1,())
    thread.start_new_thread(fun1,())
    time.sleep(2)
if __name__ == '__main__':
      main()

thread.start_new_thread(function,args[,kwargs])的第一个参数时线程函数,第二个参数时传递给线程函数的参数,它必须是tuple类型,kwargs是可选参数。

线程的结束可以等待线程自然结束,也可以在线程函数中调用thread.exit()或者thread.exit_thread()方法

(2)创建Threading.thread的子类来包装一个线程对象 ,如下例:

#coding:utf-8
#使用threading.Thread的子类来包装一个线程对象
import  threading
import time
class timer(threading.Thread):  #timer类继承于threading.Tread
    def __init__(self,num,interval):
        threading.Thread.__init__(self)
        self.thread_num=num
        self.interval=interval
        self.thread_stop=False
    def run(self):
        while not self.thread_stop:
            print 'Thread Object(%d),Time:%s'%(self.thread_num,time.ctime())
            time.sleep(self.interval)
    def stop(self):
        self.thread_stop=True
    def test(self):
        thread1=timer(1,1)
        thread2 = timer(2, 2)
        thread1.start()
        thread2.start()
        time.sleep(10)
        thread1.stop()
        thread2.stop()
        return

第二种方式,即创建自己的线程类,必要时可以重写threading.Thread类的方法,线程的控制可以由自己定制。

 threading.Thread类的使用: 

1、在自己的线程类的__init__里调用threading.Thread.__init__(self, name = threadname) 
Threadname为线程的名字 
2、run(),通常需要重写,编写代码实现做需要的功能。 
3、getName(),获得线程对象名称 
4、setName(),设置线程对象名称 
5、start(),启动线程 
6、jion([timeout]),等待另一线程结束后再运行。 
7、setDaemon(bool),设置子线程是否随主线程一起结束,必须在start()之前调用。默认为False。 
8、isDaemon(),判断线程是否随主线程一起结束。 
9、isAlive(),检查线程是否在运行中。 

到此这篇关于关于Python的Thread线程模块详解的文章就介绍到这了,更多相关Python的Thread线程模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python3中http协议提供文件服务器功能详解

    python3中http协议提供文件服务器功能详解

    http协议是互联网的通用基础协议,也可以利用其来开发文件服务器,给客户提供文件浏览,查看,下载,上传等功能,这篇文章主要介绍了python3中http协议提供文件服务器功能,需要的朋友可以参考下
    2023-06-06
  • Python利用Selenium实现网站自动签到功能

    Python利用Selenium实现网站自动签到功能

    小编了解到了python的selenium库对于自动化测试的初学者很容易上手,今天就借这篇文章给大家介绍Python利用Selenium实现网站自动签到功能,感兴趣的朋友一起看看吧
    2021-09-09
  • 在python中使用with打开多个文件的方法

    在python中使用with打开多个文件的方法

    今天小编就为大家分享一篇在python中使用with打开多个文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 使用Python保存网页上的图片或者保存页面为截图

    使用Python保存网页上的图片或者保存页面为截图

    这篇文章主要介绍了使用Python保存网页上的图片或者保存页面为截图的方法,保存网页图片主要用到urllib模块,即简单的爬虫原理,需要的朋友可以参考下
    2016-03-03
  • Python基于socket实现TCP客户端和服务端

    Python基于socket实现TCP客户端和服务端

    这篇文章主要介绍了Python基于socket实现的TCP客户端和服务端,以及socket实现的多任务版TCP服务端,下面相关操作需要的小伙伴可以参考一下
    2022-04-04
  • Python中关于matplotlib图片的灰度处理方式

    Python中关于matplotlib图片的灰度处理方式

    这篇文章主要介绍了Python中关于matplotlib图片的灰度处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 利用Python实现手机短信监控通知的方法

    利用Python实现手机短信监控通知的方法

    今天小编就为大家分享一篇利用Python实现手机短信监控通知的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python实现AI聊天机器人详解流程

    python实现AI聊天机器人详解流程

    事情是这样的,最近认识的一位小姐姐有每天早晨看天气预报的习惯。在我看来,很多人起床第一件事情就是看微信消息,既然这样,我就勉为其难每天早晨给小姐姐发送一则天气预报吧
    2021-11-11
  • numpy中实现ndarray数组返回符合特定条件的索引方法

    numpy中实现ndarray数组返回符合特定条件的索引方法

    下面小编就为大家分享一篇numpy中实现ndarray数组返回符合特定条件的索引方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python中的句柄操作的方法示例

    python中的句柄操作的方法示例

    这篇文章主要介绍了python中的句柄操作的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06

最新评论