python threading

thrading

这个模块在较低级的模块 _thread 基础上建立较高级的线程接口。

thrading.Thread 线程对象

threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
调用这个构造函数时,必需带有关键字参数。参数如下:

  • group 应该为 None;为了日后扩展 ThreadGroup 类实现而保留。
  • target 是用于 run() 方法调用的可调用对象。默认是 None,表示不需要调用任何方法。
  • name 是线程名称。默认情况下,由 "Thread-N" 格式构成一个唯一的名称,其中 N 是小的十进制数。
  • args 是用于调用目标函数的参数元组。默认是 ()
  • kwargs 是用于调用目标函数的关键字参数字典。默认是 {}
  • 如果不是 Nonedaemon 参数将显式地设置该线程是否为守护模式。 如果是 None (默认值),线程将继承当前线程的守护模式属性。
  • 如果子类型重载了构造函数,它一定要确保在做任何事前,先发起调用基类构造器(Thread.__init__())。
    在 3.3 版更改: 加入 daemon 参数。
start()
run()
join(timeout=None)
name
ident
is_alive()
isDaemon()

threading下可直接调用的函数

  • threading.active_count()
    返回当前存活的线程类 Thread 对象。返回的计数等于 enumerate() 返回的列表长度。

    import threading
    print(threading.active_count())
    # 运行结果:1,即为主线程
    
  • threading.current_thread()
    返回当前对应调用者的控制线程的 Thread 对象。如果调用者的控制线程不是利用 threading 创建,会返回一个功能受限的虚拟线程对象。

    print(threading.current_thread())
    # 运行结果 <_MainThread(MainThread, started 6712)>
    
  • threading.get_ident()
    返回当前线程的 “线程标识符”。它是一个非零的整数。它的值没有直接含义,主要是用作 magic cookie,比如作为含有线程相关数据的字典的索引。线程标识符可能会在线程退出,新线程创建时被复用。

    print(threading.get_ident())
    # 6712
    

python v3.3新增

  • threading.enumerate()
    以列表形式返回当前所有存活的 Thread 对象。 该列表包含守护线程,current_thread() 创建的虚拟线程对象和主线程。它不包含已终结的线程和尚未开始的线程。

  • threading.main_thread()
    返回主 Thread 对象。一般情况下,主线程是Python解释器开始时创建的线程。

python v3.4新增

  • threading.settrace(func) -
    为所有 threading 模块开始的线程设置追踪函数。在每个线程的 run() 方法被调用前,func 会被传递给 sys.settrace()

  • threading.setprofile(func)
    为所有 threading 模块开始的线程设置性能测试函数。在每个线程的 run() 方法被调用前,func 会被传递给 sys.setprofile()

  • threading.stack_size([size])
    返回创建线程时用的堆栈大小。

  • 常量:threading.TIMEOUT_MAX
    阻塞函数( Lock.acquire(), RLock.acquire(), Condition.wait(), ...)中形参 timeout 允许的最大值。传入超过这个值的 timeout 会抛出 OverflowError 异常。

参考文档

[threading 基于线程的并行]
[threading 源码]

你可能感兴趣的:(python threading)