美文网首页笔记本📒
python多线程完成多任务

python多线程完成多任务

作者: 涓涓自然卷 | 来源:发表于2021-01-18 09:14 被阅读0次

    知识要点

    1、导入线程模块:import threading
    2、创建子线程并指定执行任务:sub_thread = threading.Thread(target=任务名)
    3、启动线程执行任务:sub_thread.start()

    代码🌰

    import time
    import threading
    
    
    # 编写代码
    def coding():
        for i in range(3):
            print("coding...")
            time.sleep(0.2)
    
    
    # 听音乐
    def music():
        for i in range(3):
            print('music...')
            time.sleep(0.2)
    
    
    if __name__ == '__main__':
        # coding()
        # music()
        coding_thread = threading.Thread(target=coding)
        music_thread = threading.Thread(target=music)
    
        # 启动子线程
        coding_thread.start()
        music_thread.start()
    

    运行结果

    多线程完成多任务.png

    线程执行带有参数的任务

    线程执行带有参数的任务传参有两种方式:
    • 1、元组方式传参:元组方式传参一定要和参数的顺序保持一致
    • 2、字典方式传参:字典方式传参字典中的key一定要和参数名保持一致。
    • 🌰
    import time
    import threading
    
    
    # 编写代码
    def coding(num):
        for i in range(num):
            print("coding...")
            time.sleep(0.2)
    
    
    # 听音乐
    def music(count):
        for i in range(count):
            print('music...')
            time.sleep(0.2)
    
    
    if __name__ == '__main__':
        # coding()
        # music()
        # 创建线程对象
        coding_thread = threading.Thread(target=coding, args=(3,))
        music_thread = threading.Thread(target=music, kwargs={"count": 3})
    
        # 启动子线程
        coding_thread.start()
        music_thread.start()
    
    

    运行结果

    带参数.png

    设置守护主线程的方式:

    • 这只守护主线程的目的是主线程退出子线程销毁,不让主线程再等待子线程去执行。
    • 设置守护主线程有两种方式:
      1、coding_thread = threading.Thread(target=coding, args=(3,), daemon=True)
    coding_thread = threading.Thread(target=coding, args=(3,), daemon=True)
    

    2、线程对象.setDaemon(True)

        coding_thread.setDaemon(True)
        music_thread.setDaemon(True)
    

    执行效果

    守护线程.png

    线程和进程对比:

    关系对比.png
    优缺点对比.png

    相关文章

      网友评论

        本文标题:python多线程完成多任务

        本文链接:https://www.haomeiwen.com/subject/gyutzktx.html