可以通过实例化一个threading.Thread()对象来创建子线程。
import threading import time def listen_music(num): print("----> %d" % num) print("begin to listen music at ", time.ctime()) time.sleep(5) print("end to listen music at ", time.ctime()) if __name__ == '__main__': t1 = threading.Thread(target=listen_music, args=(13,)) t1.start() print("Two things is end....")
其中通过
t1 = threading.Thread(target=listen_music, args=(13,))
这句代码,创建了一个子线程。target参数是该线程要执行的函数;args参数需要传入一个元组,该元组是函数运行需要的实参。
t1.start() 启动线程;但实际上start()方法只是让线程处于就绪状态,即可以被计算机的CPU切换到该线程并执行。
运行结果如下:
----> 13 listening is end.... # 主线程执行的语句 begin to listen music at Tue Mar 19 22:03:36 2019 # 子线程开始的语句 end to listen music at Tue Mar 19 22:03:41 2019 # 子线程结束的语句
其中可以看到,主线程主要执行了主函数中的最后一句打印;子线程与主线程同时开始,但time.sleep(10)让子线程休眠了10秒,在主线程结束后10秒,子线程才会结束。