py并发_守护进程笔记

守护进程

守护进程(Daemon)是一种运行在后台的特殊进程,守护进程为专属的进程服务,并且当该专属进程中断后守护进程也同时中断,在开发中可以利用守护进程做一些特殊的系统任务。

守护进程的代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# coding: UTF-8
import multiprocessing as mtp,time #导入多进程开发模块
def status(): # 守护进程的处理函数
item = 1 #守护进程的执行次数统计
while True: #守护进程持续执行
print("[守护进程ID: %s、守护进程名称:%s] item = %s" % (
mtp.current_process().pid,
mtp.current_process().name,item))
item += 1 #累加统计信息
time.sleep(1) #追加延迟

def worker(): #工作进程的处理函数
# 此时的守护进程没有设置结束的操作,而是使用while死循环持续执行
daemon_process = mtp.Process(target=status, name="守护进程", daemon=True)
daemon_process.start() # 启动守护进程
for item in range(10):
print("[工作进程ID:%s、工作进程名称:%s] item = %s" % (
mtp.current_process().pid,
mtp.current_process().name,item)) # 输出工作进程
time.sleep(2) # 每次休眠两秒
def main(): #定义执行的主函数
worker_process = mtp.Process(target=worker,name="工作进程")
worker_process.start() #启动工作进程
if __name__ == "__main__": # 判断执行名称
main() #调用主函数

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
D:\Program_software_list\Anaconda3_5\python.exe F:/Learn/Python/untitled1/test.py
[工作进程ID:35720、工作进程名称:工作进程] item = 0
[守护进程ID: 38124、守护进程名称:守护进程] item = 1
[守护进程ID: 38124、守护进程名称:守护进程] item = 2
[工作进程ID:35720、工作进程名称:工作进程] item = 1
[守护进程ID: 38124、守护进程名称:守护进程] item = 3
[守护进程ID: 38124、守护进程名称:守护进程] item = 4
[工作进程ID:35720、工作进程名称:工作进程] item = 2
[守护进程ID: 38124、守护进程名称:守护进程] item = 5
[守护进程ID: 38124、守护进程名称:守护进程] item = 6
[工作进程ID:35720、工作进程名称:工作进程] item = 3
[守护进程ID: 38124、守护进程名称:守护进程] item = 7
[守护进程ID: 38124、守护进程名称:守护进程] item = 8
[工作进程ID:35720、工作进程名称:工作进程] item = 4
[守护进程ID: 38124、守护进程名称:守护进程] item = 9
[守护进程ID: 38124、守护进程名称:守护进程] item = 10
[工作进程ID:35720、工作进程名称:工作进程] item = 5
[守护进程ID: 38124、守护进程名称:守护进程] item = 11
[守护进程ID: 38124、守护进程名称:守护进程] item = 12
[工作进程ID:35720、工作进程名称:工作进程] item = 6
[守护进程ID: 38124、守护进程名称:守护进程] item = 13
[守护进程ID: 38124、守护进程名称:守护进程] item = 14
[工作进程ID:35720、工作进程名称:工作进程] item = 7
[守护进程ID: 38124、守护进程名称:守护进程] item = 15
[守护进程ID: 38124、守护进程名称:守护进程] item = 16
[工作进程ID:35720、工作进程名称:工作进程] item = 8
[守护进程ID: 38124、守护进程名称:守护进程] item = 17
[守护进程ID: 38124、守护进程名称:守护进程] item = 18
[工作进程ID:35720、工作进程名称:工作进程] item = 9
[守护进程ID: 38124、守护进程名称:守护进程] item = 19
[守护进程ID: 38124、守护进程名称:守护进程] item = 20

进程已结束,退出代码0

总结

当工作进程执行完毕之后,与之相伴的守护进程也随之消失,守护进程是为了某一个特定功能进程的存在而存在的一种特殊的进程,很多的系统服务都可以依靠守护进程进行一些后台的服务处理。


py并发_守护进程笔记
https://blog.wangxk.cc/2020/01/15/py并发-守护进程笔记/
作者
Mike
发布于
2020年1月15日
许可协议