zoukankan      html  css  js  c++  java
  • 网络编程之多线程

    线程理论:

    线程是什么?
    线程是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())

     



  • 相关阅读:
    软工2021个人阅读作业#2——构建之法和CI/CD的运用
    2021年.Net中级开发工程师面试题
    OneForAll框架搭建之旅:Vue + .NetCore WebApi(3)
    创建WebService服务--.NET Core与SoapCore 及遇到的问题(二)
    创建WebService服务--.NET Framework(一)
    面试小记
    Vue开发环境安装
    java笔记之设计模式 1、创建型模式:工厂方法
    Abp太重了?轻量化Abp框架
    Tomcat学习2:一键启动以及源码阅读
  • 原文地址:https://www.cnblogs.com/TF511/p/9936840.html
Copyright © 2011-2022 走看看