守护进程vs 守护线程
# #守护进程
from multiprocessing import Process
import os,time,random def task():
print('%s is running' %os.getpid())
time.sleep(2)
print('%s is done' %os.getpid())
# p = Process(target=time.sleep, args=(3,))
# p.start() if __name__ == '__main__':
p=Process(target=task)
p.daemon = True #1、必须在p.start()之前 2:守护进程不能开启子进程
p.start()
# p.join()
print('主')
#
# '''
# 举例说明守护进程的应用场景:
# 假设有两个任务要干,要玩出并发的效果,使用进程的话可以让主进程
# 执行一个任务,然后开启一个子进程执行一个任务。
#
# 如果这两个任务毫无关系,那么就像上面这么做就可以
# 如果主进程的任务在执行完毕后,子进程的任务没有存在的意义了
# 那么该子进程应该在开启之前就被设置成守护进程
# '''
迷人的例子
#主进程代码运行完毕,守护进程就会结束
from multiprocessing import Process
from threading import Thread
import time
def foo():
print('start 123')
time.sleep(1)
print('end 123') def bar():
print('start 456')
time.sleep(1)
print('end 456') if __name__ == '__main__':
p1 = Process(target=foo)
p2 = Process(target=bar) p1.daemon = True
p1.start()
p2.start() print('main----------') # main----------
# start 456
# end 456
#打印该行则主进程代码结束,则守护进程p1应该被终止,
# 可能会有p1任务执行的打印信息123,因为主进程打印main----时,p1也执行了,但是随即被终止
守护线程
等到该进程内所有非守护线程都运行完才死掉
from threading import Thread
import time,os
def run():
print('%s is running '%os.getpid())
time.sleep(2)
print('%s is done ' %os.getpid()) if __name__ == '__main__':
t = Thread(target=run)
t.daemon = True
t.start()
print('主')
# 11004 is running
# 主
迷人的例子:
from threading import Thread
import time
def foo():
print('start 123')
time.sleep(1)
print('end 123') def bar():
print('start 456')
time.sleep(1)
print('end 456') if __name__ == '__main__':
p1 = Thread(target=foo)
p2 = Thread(target=bar) p1.daemon = True
p1.start()
p2.start() print('main----------') # start 123
# start 456
# main----------
# end 123
# end 456
守护进程vs 守护线程的更多相关文章
- [Linux] 守护进程和守护线程
对于JAVA而言,一般一个应用程序只有一个进程——JVM.除非在代码里面另外派生或者开启了新进程. 而线程,当然是由进程开启的.当开启该线程的进程离开时,线程也就不复存在了. 所以,对于JAVA而言, ...
- Linux守护进程列表/守护进程
在linux或者unix操作系统中在系统引导的时候会开启很多服务,这些服务就叫做守护进程.为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统. ...
- python基础-守护进程、守护线程、守护非守护并行
守护进程 1.守护子进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic pro ...
- 守护进程VS守护线程
守护(daemon)进程 引入: join()方法可以使一个进程运行完之后再执行下一个进程,而daemon()方法就是主进程的代码执行完毕之后,不需要等待子进程,立即终止子进程. join()方法和d ...
- window下面的守护进程,redis守护进程,RunHiddenConsole免费下载
redis版本 在redis的目录下新建start_redis.bat 写入一下代码: D:/redis/RunHiddenConsole/RunHiddenConsole.exe redis-ser ...
- (4)进程---daemon守护线程和join阻塞
join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用 ...
- day34 python学习 守护进程,线程,互斥锁,信号量,生产者消费者模型,
六 守护线程 无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 #1.对主进程来说,运行完毕指的是主进程代码运行完毕 #2.对主线程来说,运行完 ...
- 多进程(了解):守护进程,互斥锁,信号量,进程Queue与线程queue(生产者与消费者模型)
一.守护进程 主进程创建守护进程,守护进程的主要的特征为:①守护进程会在主进程代码执行结束时立即终止:②守护进程内无法继续再开子进程,否则会抛出异常. 实例: from multiprocessing ...
- 4、网络并发编程--僵尸进程、孤儿进程、守护进程、互斥锁、消息队列、IPC机制、生产者消费者模型、线程理论与实操
昨日内容回顾 操作系统发展史 1.穿孔卡片 CPU利用率极低 2.联机批处理系统 CPU效率有所提升 3.脱机批处理系统 CPU效率极大提升(现代计算机雏形) 多道技术(单核CPU) 串行:多个任务依 ...
随机推荐
- LeetCode: Max Consecutive Ones
这题最关键的是处理最开始连续1和最后连续1的方式,想到list一般在最前面加个node的处理方式,在最前面和最后面加0即可以很好地处理了 public class Solution { public ...
- Python面试题之容器(Collections)
容器(Collections) Python附带一个模块,它包含许多容器数据类型,名字叫作collections.我们将讨论它的作用和用法. 我们将讨论的是: defaultdict coun ...
- Apache 工作模式详解
Apache 工作模式详解 Apache 2.X 支持插入式并行处理模块,称为多路处理模块(MPM).在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择, ...
- ASP.NET MVC 处理404与500错误页面的方法
第一步创建ErrorPageController 第二步添加Oops页面 @{ ViewBag.Title = "Oops"; Layout = "~/Areas/Adm ...
- CSS气泡提示框 可自定义配置箭头
在线演示 本地下载
- RegExp方法解析
RegExp 正则表达式(regular expression)的缩写 语法: 显式构造函数 var rg= new RegExp(pattern, attributes) 隐式构造函数 var rg ...
- 多线程-模拟阻塞queue队列
前阵子学习了多线程,现在进行总结一下,模拟队列. 分析问题: (1)首先需要一个容器存放元素,这里用linkedList队列. (2)每次像容器中添加或删除元素的时候需要计数,所以这里需要一个计数器, ...
- BZOJ3669/UOJ3 魔法森林(LCT)
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 使用maven时报错An error occurred while filtering resources
解决办法:右键项目-->maven-->update project .
- MySQL for Mac 5.7.x 版本忘记密码修改root密码
1.安装mysql 2.命名别名: vim ~/.bash_profile alias mysql=/usr/local/mysql/bin/mysql alias mysqladmin=/usr/l ...