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

posted @ 2018-03-18 21:22  laosun0204  阅读(100)  评论(0编辑  收藏  举报