python 线程的五个状态

  • Post category:Python

Python中的线程可以处于以下五个状态之一:

  1. 新建状态(New):当我们创建了一个线程对象时,线程对象处于新建状态。这个状态可以通过调用线程对象的start()方法启动线程,使线程进入就绪状态。

  2. 就绪状态(Runnable):当线程启动后,处于就绪状态,此时线程已经分配了所有应该分配的资源,只等待CPU资源的调度执行。正在等待CPU资源的线程也称之为可以被调度的线程。

  3. 运行状态(Running):通过操作系统的调度机制,就绪状态的线程被CPU选中,进入运行状态。此时线程的代码为正在执行状态。

示例:

import threading

class MyThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        print("Hello from thread")

# 新建状态
t1 = MyThread()

# 就绪状态
t1.start()

# 运行状态
  1. 阻塞状态(Blocked):当线程在等待某个条件(如I/O操作完成)的时候,它就会进入阻塞状态,此时该线程不消耗CPU资源。当条件满足时,线程重新进入就绪状态,等待操作系统的调度。

示例:

import threading, time

def fun():
    time.sleep(2)
    print("Hello from thread")

# 新建状态
t1 = threading.Thread(target=fun)

# 就绪状态
t1.start()

# 阻塞状态
time.sleep(1)

# 就绪状态
  1. 终止状态(Terminated):线程的run()方法运行完毕,或者在运行过程中抛出异常,线程就会进入终止状态。

示例:

import threading

class MyThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        print("Hello from thread")

# 新建状态
t1 = MyThread()

# 就绪状态
t1.start()

# 运行状态
# 终止状态