资讯专栏INFORMATION COLUMN

Python线程专题3:thread对象

EdwardUp / 1801人阅读

摘要:上一篇文章线程专题多线程共享全局变量下一篇文章线程专题对象对象对象对象类用于表示多带带的控制线程。线程启动时将调用此方法。阻塞线程,等待直到线程终止或者出现超时为止。当不存在任何任何活动的非后台进程时,整个程序会退出。

上一篇文章:Python线程专题2:多线程共享全局变量
下一篇文章:Python线程专题4:Timer对象、Lock对象、Rlock对象
Thread对象

Thread类用于表示多带带的控制线程。

语法:
t=Thread(group=None,target=None,name=None,args=(),kwargs={})
创建一个新的Thread实例:t

group:为以后扩张保留的,默认为None

target:一个可调用对象,线程启动时,run()方法将调用此对象

name:线程名称,默认创建一个“Thread-N”格式的唯一名称。

args:传递给target函数的参数元祖

kwargs:传递给target的关机字参数的字典。
常用属性于方法
t.start():通过在一个多带带的控制线程中调用run(),启动线程,此方法只能被调用一次。

t.run():线程启动时将调用此方法。默认情况下,他会调用目标函数target。还可以在Thread的子类中重新定义此方法。

t.join([timeout]):阻塞线程,等待直到线程终止或者出现超时为止。timeout是以秒为单位的超时时间。
线程启动之前不能调用此方法,否则会报错。

t.is_alive:如果线程是活动的,返回True,否则返回False,从start()返回的那一刻开始,线程就是活动的,
直到run()方法终止为止。

t.name:线程名称,这个字符串用于唯一标识,可以根据需要将它更改为更有意义的值,

t.ident:整数线程标识符,如果线程尚未启动,它的值为None。

t.daemon:如果线程是后台线程,该值为True,否则未False。当不存在任何任何活动的非后台进程时,整个程序会退出。
实例1:利用Thread对象,简单创建一个线程,并启动一个函数
代码:
#利用Thread对象,简单创建一个线程,并启动一个函数
from threading import Thread
import time
def mark(interval):
    print("循环等待时间时间%d,等待前时间:%s"%(interval,time.ctime()))
    time.sleep(interval)
    print("等待后的时间:%s"%time.ctime())

if __name__=="__main__":
    t=Thread(target=mark,args=(3,))
    t.daemon=False#设置为非后台线程,不然会看不到自线程打印效果主线程就直接关闭了
    #下面一句会报错,必须在start()方法之后调用
    #t.join(3)
    t.start()
    #下面语句也会报错,因为start只能调用一次
    #t.start()
    print("end")
结果:

实例2:通过继承Thread,实现线程类

代码:

#通过继承Thread,实现线程类
from threading import Thread
import time

class MyThread(Thread):
    def __init__(self,interval):
        #下面语句用来调用基类方法,必须调用
        Thread.__init__(self)
        self.daemon=False
        self.interval=interval
    def run(self):
        print("循环等待时间时间%d,等待前时间:%s" % (self.interval, time.ctime()))
        time.sleep(self.interval)
        print("等待后的时间:%s" % time.ctime())

if __name__=="__main__":
    t=MyThread(3)
    t.start()
    #为了方便查看打印效果,加了一秒延迟
    time.sleep(1)
    print("end")

结果:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42393.html

相关文章

  • Python线程专题2:多线程共享全局变量

    摘要:上一篇文章线程专题多线程使用的必要性下一篇文章线程专题对象在一个进程内的所有线程共享全局变量。但多线程对全局变量的更改会导致变量值得混乱。 上一篇文章: Python线程专题1:多线程使用的必要性下一篇文章:Python线程专题3:thread对象 在一个进程内的所有线程共享全局变量。但多线程对全局变量的更改会导致变量值得混乱。 实例:验证同一个进程内所有线程共享全局变量 代码: #...

    Tangpj 评论0 收藏0
  • Python线程专题纵览篇

    摘要:上一篇文章进程专题完结篇多进程处理的一般建议下一篇文章线程专题多线程使用的必要性进程线程进程能够完成多任务,比如在一个电脑上可以运行多个软件。由于占用资源少,也使得多线程程序并发比较高。 上一篇文章:Python进程专题完结篇:多进程处理的一般建议下一篇文章:Python线程专题1:多线程使用的必要性 进程VS线程 进程:能够完成多任务,比如在一个电脑上可以运行多个软件。线程:也能够...

    张红新 评论0 收藏0
  • Python线程专题4:Timer对象、Lock对象、Rlock对象

    摘要:语法创建定时器对象,在秒后运行函数,和提供传递给的参数和关键字参数。在调用方法后才能启动计定时器。如果函数还未执行,取消定时器。否则,锁将保持已锁定状态。 上一篇文章:Python线程专题3:thread对象下一篇文章:Python线程专题5:信号量与有边界的信号量 Timer对象、Lock对象、Rlock对象 Timer对象 Timer对象用于在稍后的某个时间执行一个函数。 语法:...

    Edison 评论0 收藏0
  • Python线程专题9:线程终止与挂起、实用工具函数

    摘要:上一篇文章线程专题使用锁的注意事项下一篇文章线程专题多线程按顺序执行线程没有任何方法可用于强制终止或挂起。实用工具函数函数名解释返回当前活动的对象数量。 上一篇文章:Python线程专题8:使用锁的注意事项下一篇文章:Python线程专题10:queue、多线程按顺序执行 线程没有任何方法可用于强制终止或挂起。这是设计上的原因,因为编写线程程序本身十分复杂。例如:如果某个线程已经获取...

    dunizb 评论0 收藏0
  • Python线程专题5:信号量与有边界的信号量

    摘要:有边界的信号量语法创建一个新的有边界信号量。是计数器的初始值,如果忽略,将默认为信号量与有边界的信号量的区别的工作方式与完全相同,但操作的次数不能超过的操作次数。信号量与互斥锁的微妙差别信号量可用于发送信号。 上一篇文章:Python线程专题4:Timer对象、Lock对象、Rlock对象下一篇文章:Python线程专题6:事件 信号量与有边界的信号量 信号量是一个基于计数器的同步原...

    Dionysus_go 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<