day32
一、守护进程
1、定义:一个进程守护另一个进程,当被守护进程运行结束后,守护进程不管是否运行结束,也都跟着结束。
特点:a、守护进程一般为子进程,进程之间是相互独立的,守护进程会在主进程执行结束后就终止;
b、守护进程内无法再开启子进程,否则会抛出异常。
import time from multiprocessing import Process def task(): print("妃子的一生") time.sleep(5) print("妃子凉了") if __name__ == '__main__': fz = Process(target=task) fz.daemon = True # 将子进程作为主进程的守护进程 要注意 必须在开启子进程之前 设置! fz.start() print("皇帝登基了") time.sleep(2) print("当了十年皇帝..") print("皇帝驾崩") #主进程代码运行完毕,守护进程就会结束 from multiprocessing import Process from threading import Thread import time def foo(): print(123) time.sleep(1) print("end123") def bar(): print(456) time.sleep(3) print("end456") p1=Process(target=foo) p2=Process(target=bar) p1.daemon=True p1.start() p2.start() print("main-------") #打印该行则主进程代码结束,则守护进程p1应该被终止,可能会有p1任务执行的打印信息123,因为主进程打印main----时,p1也执行了,但是随即被终止
二、进程同步(锁):
进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,但是共享带来的是竞争,竞争带来的结果就是错乱,那么如何控制错乱呢,此时就用到了加锁处理。
###并发运行,效率高,但竞争写同一文件,数据写入错乱 #文件db的内容为:{"count":1} #注意一定要用双引号,不然json无法识别 from multiprocessing import Process,Lock import time,json,random def search(): dic=json.load(open('db.txt')) print('