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())

     



  • 相关阅读:
    Ubuntu 更换软件源
    Ubuntu 配置 SOCKS5
    Ubuntu 配置 Sha-dow-socks
    frp(内网穿透)
    solr 远程代码执行(CVE-2019-12409)
    多线程处理爬虫
    python实现文件自动排序
    python 实现根据文件名自动分类移动至不同的文件夹
    Centos7如何开启任意端口服务
    centos7默认安装没有连接网络
  • 原文地址:https://www.cnblogs.com/TF511/p/9936840.html
Copyright © 2011-2022 走看看