• 并发编程~~~多线程~~~开启线程的两种方式, 线程的其他方法


    一 什么是线程

    线程是执行程序的最小单位,就像一条流水线工作的过程.

    开启一个进程: 在内存中开启一个进程空间,然后将主进程的所有的资源数据复制一份,然后调用线程去执行代码

    进程是资源单位,线程是执行单位

    二 线程 VS 进程

    1. 开启进程的开销非常大,比开启线程的开销大很多
    2. 开启线程的速度非常快,要快几十倍到上百倍
    3. 线程与线程之间可以共享同一个进程的数据,进程与进程之间需要借助队列等方法实现通信.
    4. 主线程和子线程没有地位之分(没有主次之分),一个主线程结束后要等其他子线程结束后,才能结束本进程.

    三 开启线程的两种方式

    from threading import Thread
    import time
    def task(name):
        print(f'{name}is running')
        time.sleep(1)
        print(f'{name}is gone')
    
    if __name__ == '__main__':
        t1 = Thread(target=task,args=('大黑',))
        t1.start()
        print('主线程')
    
    from threading import Thread
    import time
    class MyThread(Thread):
        def __init__(self,name):
            super().__init__()
            self.name = name
    
        def run(self):
            print(f'{self.name}is running')
            time.sleep(1)
            print(f'{self.name}is gone')
    
    if __name__ == '__main__':
        t1 = MyThread('大黑')
        t1.start()
        print('主进程')
    

    四 线程的其他方法

    from threading import Thread,currentThread,enumerate,activeCount
    import os,time
    def task():
        print(currentThread())
        time.sleep(1)
        print('666')
    
    if __name__ == '__main__':
        t1 = Thread(target=task,name='线程1')
        t2 = Thread(target=task,name='线程2')
        t1.start()
        t2.start()
        time.sleep(2)
        print(t1.isAlive()) # 判断线程是否活着
        print(t1.getName()) # 获取线程名
        t1.setName('子进程1') # 设置线程名
        print(t1.getName())
        print(currentThread()) # 获取当前线程的对象
        print(enumerate()) # 返回一个列表,包含所有的线程对象
        print(activeCount()) # 返回正在运行的线程数量
        print(f'主线程{os.getpid()}')
    
  • 相关阅读:
    webkit and the browser
    【技术原创】京东商城价格图片分析解析源代码下载(C#),附演示程序 转
    maglev need 64bit linux version
    sed awk
    VMware公司SpringSource部门宣布收购Gemstone Systems公司
    新手?为什么需要关怀?
    【技术原创】京东商城价格图片分析解析源代码下载(C#),附演示程序 转
    【技术原创】京东商城价格图片分析解析源代码下载(C#),附演示程序 转
    C语言正则表达式库pcre介绍
    人工翻译
  • 原文地址:https://www.cnblogs.com/lav3nder/p/11802275.html
Copyright © 2020-2023  润新知