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语句后面的代码.
    
  • 相关阅读:
    二叉树相关题目
    二叉树的遍历
    mysql获取某个表中除了某个字段名外的所有字段名
    设计模式之原型模式
    设计模式之工厂方法模式
    设计模式之代理模式
    设计模式之装饰模式
    设计模式之策略模式
    设计模式之简单工厂模式
    Redis的使用及参考代码
  • 原文地址:https://www.cnblogs.com/cheng825/p/11536621.html
Copyright © 2011-2022 走看看