zoukankan      html  css  js  c++  java
  • 线程

    线程是轻量级进程,一个标准的线程有线程id,当前指令,寄存器集合和堆栈组成,线程是进程的实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有在运行中必不可少的资源,但它可以与同属有一个进程的其他线程共享进程所拥有的全部资源。

    使用方法:使用threading模块创建线程

    #coding=utf-8
    import threading
    import time
     
    def saySorry():
        print("大家好!")
        time.sleep(1)
     
    if __name__ == "__main__":
        for i in range(5):
            t = threading.Thread(target=saySorry)
            t.start() #启动线程,即让线程开始执行

    多线程并发操作,当调用start()方法后才真正创建线程并执行,每一个线程都有一个唯一的标识符用来区分程序的主次关系,程序主入口被称为主线程,使用threading.Thread()创建的都是子线程,线程数量等于:主线程+子线程数

    主线程默认会等待所有子线程结束后再结束

    len(threading.enumerate())  查看线程数量

    同时开启几个线程,是没有执行顺序的

    t1 = threading.Thread(target=)

    t1.setDaemon(True)  设置守护线程

    多线程共享全局变量,如果多个线程同时更改同一个全局变量,会造成错误的结果,需要通过t1.join() 让其他线程等待t1线程执行结束再执行,也就相当于没有并发而是并行

    互斥锁

    murtes = threading.Lock()  使用Lock模块创建线程锁对象

    mutes.acquire   锁定同一个进程下不同线程的共享资源,其他线程不能更改此资源

    mutes.release()  释放锁

    确保了某段关键代码只能由一个线程从头到尾完整地执行

    死锁

    在线程共享多个资源 时,如果两个线程分别占有一部分资源并同时等待对方的资源,就会造成死锁。

  • 相关阅读:
    9.17
    9.14
    9.13
    9.13
    9.11
    9.28
    10 .19 知识点
    redux
    react路由
    react的三大属性
  • 原文地址:https://www.cnblogs.com/xuchuankun/p/9362694.html
Copyright © 2011-2022 走看看