zoukankan      html  css  js  c++  java
  • day10_锁、守护进程

     多个线程操作同一个数据的时候,就得加python3里自动加上锁了

    import threading
    lock = threading.Lock() # 申请一把锁
    num = 0


    def add():
    global num
    # lock.acquire() # 加锁
    # # num += 1
    # # lock.release() # 解锁,如果不解会产生死锁
    with lock: # 简写,with可以加锁,也可以解锁
    num += 1


    for i in range(20):
    t = threading.Thread(target=add)
    t.start()

    while threading.activeCount() != 1:
    pass

    print(num) 

     

    守护线程的意思是,主线程死掉了(执行完了),那么不管你子线程有没有运行完,都一起死(结束)

    import time
    import threading


    def test():
    time.sleep(2)
    print('哈哈哈')


    for i in range(5):
    t = threading.Thread(target=test)
    t.setDaemon(True) # 设置子线程为守护线程,默认是False
    t.start()


    print('over')

    注释掉t.setDaemon(True),先打印over,2秒后打印出5行哈哈哈,如果不注释守护线程,主线程执行结束了,只会打印over

  • 相关阅读:
    MSBuild、条件编译、预处理命令
    批量数据插入SqlBulkCopy
    WPF 双向绑定
    编程思想之一
    python 提交表单
    python 添加用户
    python 分页
    day9 IO多路复用
    day9 线程、进程和协程深入版
    day8 进程、线程 简介版
  • 原文地址:https://www.cnblogs.com/laosun0204/p/8597562.html
Copyright © 2011-2022 走看看