可以通过实例化一个threading.Thread()对象来创建子线程。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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...." ) |
其中通过
1 | 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秒,子线程才会结束。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步