zoukankan      html  css  js  c++  java
  • 并发编程~~~多线程~~~开启线程的两种方式, 线程的其他方法

    一 什么是线程

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

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

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

    二 线程 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()}')
    
  • 相关阅读:
    读《大道至简》第七、八章有感
    跨域AJAX
    简单的变长数组
    约瑟夫环问题
    BZOJ 1050: [HAOI2006]旅行comf
    BZOJ 1061: [Noi2008]志愿者招募
    BZOJ 1016: [JSOI2008]最小生成树计数
    20155326刘美岑 2016-2017-2 《Java程序设计》第5周学习总结
    6月13日云栖精选夜读:数梦工场完成A轮7.5亿融资 三个维度构建“新型互联网”
    Java使用POI实现数据导出excel报表
  • 原文地址:https://www.cnblogs.com/lav3nder/p/11802275.html
Copyright © 2011-2022 走看看