zoukankan      html  css  js  c++  java
  • [转] Python标准库的threading.Thread类

    这个类表示在单独的控制线程中运行的活动。有两种方法可以指定这种活动,给构造函数传递回调对象,或者在子类中重写run() 方法。其他方法(除了构造函数)都不应在子类中被重写。换句话说,在子类中只有__init__()run()方法被重写。

    一旦线程对象被创建,它的活动需要通过调用线程的start()方法来启动。这方法再调用控制线程中的run方法。

    一旦线程被激活,则这线程被认为是'alive'(活动)。当它的run()方法终止时-正常退出或抛出未处理的异常,则活动状态停止。isAlive()方法测试线程是否是活动的。

    一个线程能调用别的线程的join()方法。这将阻塞调用线程,直到拥有join()方法的线程的调用终止。

    线程有名字。名字能传给构造函数,通过setName()方法设置,用getName()方法获取。

    线程能被标识为'daemon thread'(守护线程).这标志的特点是当剩下的全是守护线程时,则Python程序退出。它的初始值继承于创建线程。这标志用setDaemon()方法设置,用isDaemon()获取。

    存在'main thread'(主线程),它对应于Python程序的初始控制线程。它不是后台线程。

    有可能存在'dummy thread objects'(哑线程对象)被创建。这些线程对应于'alien threads'(外部线程),它们在Python的线程模型之外被启动,像直接从C语言代码中启动。哑线程对象只有有限的功能,它们总是被认为是活动的,守护线程,不能使用join()方法。它们从不能被删除,既然它无法监测到外部线程的中止。

    class Thread(group=None, target=None, name=None, args=(), kwargs={})

    构造函数能带有关键字参数被调用。这些参数是:

    group 应当为 None,为将来实现ThreadGroup类的扩展而保留。

    target 是被 run()方法调用的回调对象. 默认应为None, 意味着没有对象被调用。

    name 为线程名字。默认,形式为'Thread-N'的唯一的名字被创建,其中N 是比较小的十进制数。

    args是目标调用参数的tuple,默认为()。

    kwargs是目标调用的参数的关键字dictionary,默认为{}。

    如果子线程重写了构造函数,它应保证调用基类的构造函数(Thread.__init__()),在线程中进行其他工作之前。

    start()
    启动线程活动。

    在每个线程对象中最多被调用一次。它安排对象的run() 被调用在一单独的控制线程中。

    run()

    用以表示线程活动的方法。

    你可能在子类重写这方法。标准的 run()方法调用作为target传递给对象构造函数的回调对象。如果存在参数,一系列关键字参数从argskwargs参数相应地起作用。

    join([timeout])
    等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。

    timeout参数未被设置或者不是None,它应当是浮点数指明以秒计的操作超时值。因为join()总是返回None,你必须调用isAlive()来判别超时是否发生。

    timeout 参数没有被指定或者是None时,操作将被阻塞直至线程中止。

    线程能被join()许多次。

    线程不能调用自身的join(),因为这将会引起死锁。

    在线程启动之前尝试调用join()会发生错误。

    getName()
    返回线程名。
    setName(name)
    设置线程名。

    这名字是只用来进行标识目的的字符串。它没有其他作用。多个线程可以取同一名字。最初的名字通过构造函数设置。

    isAlive()
    返回线程是否活动的。

    大致上,线程从 start()调用开始那点至它的run()方法中止返回时,都被认为是活动的。模块函数enumerate()返回活动线程的列表。

    isDaemon()
    返回线程的守护线程标志。
    setDaemon(daemonic)
    设置守护线程标志为布尔值daemonic。它必须在start()调用之前被调用。

    初始值继承至创建线程。

    当没有活动的非守护线程时,整个Python程序退出。

  • 相关阅读:
    Array.of()和Array()区别
    less常用方法
    javascript时间戳转换成yyyy-MM-DD格式
    javascript中标准事件流addEventListener介绍
    javascript中模块化知识总结
    搜索栏简单小案例
    css3伸缩布局中justify-content详解
    css3动画简单案例
    正则表达式的语法
    Beautisoup库
  • 原文地址:https://www.cnblogs.com/huazi/p/2769018.html
Copyright © 2011-2022 走看看