zoukankan      html  css  js  c++  java
  • 线程的简单介绍

    线程的两种创建方式

    from threading import Thread
    import time,os
    
    #方式一使用函数对象
    def task(name):
        print(f'{name}子线程 start')
        time.sleep(2)
        print(f'{name}子线程 end')
    
    t = Thread(target=task,args=('t1',))
    t.start()
    print('线程一')
    
    #方式二使用自定义类来继承Thread类
    class task(Thread):
        def run(self):
            print(f'子线程 start')
            time.sleep(1)
            print(f'子线程 end')
    
    t = task()
    t.start()
    print('线程一')
    

    线程和进程的速度对比

    由于进程在实例化后,我们使用start()方法来向操作系统发送进程的内存空间的开辟,然后执行子进程会把父进程里的代码复制一份来执行,这个请求可能由于操作系统在执行其他任务,而不会立即完成请求任务,而线程会直接执行我们指定的代码,并不需要申请内存空间,所以速度会快于进程.
    

    线程的资源共享

    from threading import Thread
    import time,os
    x = 100
    def task():
        global x
        x= 1000
    t = Thread(target=task)
    t.start()
    print(x) # 1000
    
    #经试验,在程序开始定义的x = 100,经过线程的运行,x 变成了1000 所以我们创建的t线程和主线程使用的一块内存空间.
    

    线程的join方法

    from threading import Thread
    import time
    def task(name):
        print(f'{name}子线程 start')
        time.sleep(2)
        print(f'{name}子线程 end')
    t = Thread(target=task,args=('t1',))
    
    t.start()
    t.join()
    print('线程一')
    
    #线程的join方法和进程的join功能类似,都是等待我们线程(进程)执行结束,才会执行join语句后面的代码.
    
  • 相关阅读:
    越狱-监狱地图
    老K说故事系列(003)
    老K说故事系列(001)
    面向对象软件开发培训
    别让思想老去,重燃激情火焰
    软件产品界面设计-培训PPT发布
    读“道法自然”的非技术有感
    老K说故事系列(002)
    游戏规则
    基于C# Socket实现多人网络聊天室
  • 原文地址:https://www.cnblogs.com/cheng825/p/11536621.html
Copyright © 2011-2022 走看看