• 网络编程之多线程


    线程理论:

    线程是什么?
    线程是CPU的基本执行单位 线程里面包括就是要执行的代码

    进程是一个资源单位 其中包括了这个程序需要的所有资源
    就像是一个工厂 里面包括了生产所需所有资源
    线程像一条流水线 包含具体的执行步骤
    一个工厂中可以包含多个线程 每个线程可以生产不同的产品


    每个进程被启动后 就会自动创建一个线程 该线程会从程序入口开始执行代码(py程序入口就是被执行文件的第一行)
    被称之为主线程
    如果主线程在完成任务时耗时太长 可以开启子线程来辅助主线程

    线程 VS 进程:

      线程 和进程的区别
          进程是一个资源单位
          一个进程可以包含多个线程
          多个线程之间数据可以共享
          线程开销比进程小
          在多线程中CPU的切换速度会非常快 但资源消耗没有进程高

    怎样开启线程:

    
    
    from threading import Thread
    import time,os
    
    def task():
        time.sleep(2)
        print("子线程 run.....")
        print(os.getpid())    #查看子线程pid
    
    #创建一个子线程
    t = Thread(target=task)
    t.start()   #启动子线程
    
    # 主线程等到子线程结束
    t.join()
    print("over")
    print(os.getpid())

    守护线程:

    from threading import Thread
    import time
    
    def task():
        time.sleep(5)
        print("子线程...")
    
    t = Thread(target=task)
    t.daemon = True  # 守护线程  执行顺序与进程中一样   与进程类似
    t.start()
    print("over")

    常用方法:

    from threading import Thread,current_thread,active_count,enumerate
    import time
    
    def task():
        print("子线程...")
        time.sleep(1)
        # 获取当前线程对象  非常常用
        print(current_thread())
    
    t = Thread(target=task,name="线程!")
    # t.daemon = True  # 守护线程  执行顺序与进程中一样
    print(t.name)
    print(t)
    #启动线程 t.start()
    # 获取当前活跃线程的数量 print(active_count()) # 返回活跃的线程对象枚举 print(enumerate()) print("over")

    启动线程的另一种方式:

    from threading import Thread,current_thread
    
    class MyThread(Thread):
        def run(self):    #和进程类似 都需指定一个run 函数
            print("run 函数执行!")
            print(current_thread())
    
    mt = MyThread()
    mt.start()
    
    print(current_thread())

     



  • 相关阅读:
    【解题报告】 [YNOI2019]排队
    【解题报告】[AHOI2001]彩票摇奖
    【解题报告】 [NOIP2006]能量项链
    【解题报告】 启示录
    【解题报告】 【NOIP2018】 摆渡车
    【解题报告】 【NOIP2017】 奶酪
    C# winform 窗体从右下角向上弹出窗口效果
    C#开发COM+组件和ActiveX控件
    JQuery
    How to delete a team project from Team Foundation Service (tfs.visualstudio.com)
  • 原文地址:https://www.cnblogs.com/TF511/p/9936840.html
Copyright © 2020-2023  润新知