zoukankan      html  css  js  c++  java
  • 线程

    线程

    在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程,cpu真正的执行单位是线程,在工厂中,每个车间都有房子,而且每个车间默认就有一条流水线

    操作系统===》工厂

    进程===》车间

    线程===》流水线

    进程运行===》电源

    相关知识点:

    线程:cpu最小的执行单位

    进程:资源集合/资源单位

    线程运行=运行代码

    进程运行=各种资源+线程

    右键运行:

    申请内存空间,先把解释器丢进去,并且把代码丢进去(进程做的),运行代码(线程)

    进程和线程的区别

    线程===》单指代码的执行过程

    进程===》资源的申请与销毁的过程

    特点:

    进程内存空间彼此隔离,同一个进程下的线程共享资源

    进程和线程的创建速度

    进程需要申请资源开辟空间,慢

    线程只是告诉操作系统一个执行方案,快

    线程开启的两种方式之函数

    from threading import Thread
    import time
    def task():
        print('线程 start')
        time.sleep(2)
        print('线程 end')
    
    
    if __name__ == '__main__':
        t = Thread(target=task)
        t.start()  # 告诉操作系统开一个线程  .
    
        print('主')
    

    线程开启的两种方式之类

    from threading import Thread
    import time
    # 进程等待所有线程结束才会结束
    
    class Myt(Thread):
        def run(self):
            print('子线程 start')
            time.sleep(5)
            print('子线程 end')
    
    t = Myt()
    t.start()
    print('主线程')
    

    子线程vs子进程创建速度

    from threading import Thread
    from multiprocessing import Process
    import time
    
    def task(name):
        print(f'{name} is running')
        time.sleep(2)
        print(f'{name} is end')
    
    
    if __name__ == '__main__':
        t = Thread(target=task,args=('子线程',))
        p = Process(target=task,args=('子进程',))
        # t.start()
        p.start()
        print('主')
        '''  
    开启子线程的打印效果:
    
    子线程 is running
    主
    子线程 is end
    
    开启子进程打印效果:
    
    主
    子进程 is running
    子进程 is end  
        '''
    

    子线程共享资源

    from threading  import Thread
    import time,os
    
    x = 100
    def task():
        global x
        x = 50
        print(os.getpid()) # 5204
    
    
    if __name__ == '__main__':
    
        t = Thread(target=task)
        t.start()
        time.sleep(2)
        print(x) # 50
        print(os.getpid())
    

    线程的join方法

    from threading import Thread
    import time
    def task():
        print('子线程 start')
        time.sleep(2)
        print('子线程 end')
    
    t = Thread(target=task)
    t.start()
    t.join() # 等待子线程运行结束
    print('主线程')
    

  • 相关阅读:
    PHP版根据经纬度和半径计算出经纬度的范围
    使用GPS经纬度定位附近地点(某一点范围内查询)
    sql语句查询经纬度范围
    Android检测是否安装了指定应用
    Android 定时器实现的几种方式和removeCallbacks失效问题详解
    Android Service与Activity之间通信的几种方式
    Android操作系统11种传感器介绍
    Android录音--AudioRecord、MediaRecorder
    Android广播接收者应用(电话拦截器)
    收藏夹
  • 原文地址:https://www.cnblogs.com/lzss/p/11542079.html
Copyright © 2011-2022 走看看