# #守护进程
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 守护线程的更多相关文章

  1. [Linux] 守护进程和守护线程

    对于JAVA而言,一般一个应用程序只有一个进程——JVM.除非在代码里面另外派生或者开启了新进程. 而线程,当然是由进程开启的.当开启该线程的进程离开时,线程也就不复存在了. 所以,对于JAVA而言, ...

  2. Linux守护进程列表/守护进程

      在linux或者unix操作系统中在系统引导的时候会开启很多服务,这些服务就叫做守护进程.为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统. ...

  3. python基础-守护进程、守护线程、守护非守护并行

    守护进程 1.守护子进程 主进程创建守护进程  其一:守护进程会在主进程代码执行结束后就终止  其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic pro ...

  4. 守护进程VS守护线程

    守护(daemon)进程 引入: join()方法可以使一个进程运行完之后再执行下一个进程,而daemon()方法就是主进程的代码执行完毕之后,不需要等待子进程,立即终止子进程. join()方法和d ...

  5. window下面的守护进程,redis守护进程,RunHiddenConsole免费下载

    redis版本 在redis的目录下新建start_redis.bat 写入一下代码: D:/redis/RunHiddenConsole/RunHiddenConsole.exe redis-ser ...

  6. (4)进程---daemon守护线程和join阻塞

    join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用 ...

  7. day34 python学习 守护进程,线程,互斥锁,信号量,生产者消费者模型,

    六 守护线程 无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 #1.对主进程来说,运行完毕指的是主进程代码运行完毕 #2.对主线程来说,运行完 ...

  8. 多进程(了解):守护进程,互斥锁,信号量,进程Queue与线程queue(生产者与消费者模型)

    一.守护进程 主进程创建守护进程,守护进程的主要的特征为:①守护进程会在主进程代码执行结束时立即终止:②守护进程内无法继续再开子进程,否则会抛出异常. 实例: from multiprocessing ...

  9. 4、网络并发编程--僵尸进程、孤儿进程、守护进程、互斥锁、消息队列、IPC机制、生产者消费者模型、线程理论与实操

    昨日内容回顾 操作系统发展史 1.穿孔卡片 CPU利用率极低 2.联机批处理系统 CPU效率有所提升 3.脱机批处理系统 CPU效率极大提升(现代计算机雏形) 多道技术(单核CPU) 串行:多个任务依 ...

随机推荐

  1. 用cmd运行php代码、socket

    一.用cmd运行php代码,首先要对电脑进行配置: 1.右击计算机-属性-高级系统设置-环境变量,我们需要添加环境变量. 2.在Administrator的用户变量(U)下点击新建,弹出对话框,变量名 ...

  2. Kattis - wheretolive 【数学--求质心】

    Kattis - wheretolive [数学] Description Moving to a new town can be difficult. Finding a good place to ...

  3. cdoj1334郭大侠与Rabi-Ribi

    地址:http://acm.uestc.edu.cn/#/problem/show/1334 题目: 郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Other ...

  4. vue-scroller的使用

    一 安装 使用npm 安装 npm install vue-scroller -S 二 引入 https://www.jianshu.com/p/a39f5276ff0b https://www.np ...

  5. winform + INotifyPropertyChanged + IDataErrorInfo + ErrorProvider实现自动验证功能

    一个简单的Demo.百度下载链接:http://pan.baidu.com/s/1sj4oM2h 话不多说,上代码. 1.实体类定义: class Student : INotifyPropertyC ...

  6. ResulsetHandler九个实现类

    ResulsetHandler九个实现类 ArrayHandler, 将结果集中第一条记录封装到Object[],数组中的每一个元素就是记录中的字段值. ArrayListHandler, 将结果集中 ...

  7. Caffe python利用classify.py实现对单通道(灰度图)的数据进行分类

    比如你在mnist的prototxt中定义图输入是单通道的,也就是channel=1,然后如果直接调用classify.py脚本来测试的话,是会报错,错误跟一下类似. Source param sha ...

  8. Effective C++ 条款02:尽量以const,enum,inline替换 #define

    换一种说法就是宁可以编译器替换预处理器 举例 #define ASPECT_RATIO 1.653 记号ASPECT_RATIO也许从未被编译器看见:也许在编译起开始处理源码前它就被预处理器移走了,于 ...

  9. Hibernate常见优化策略

    ① 制定合理的缓存策略(二级缓存.查询缓存). ② 采用合理的Session管理机制. ③ 尽量使用延迟加载特性. ④ 设定合理的批处理参数. ⑤ 如果可以,选用UUID作为主键生成器. ⑥ 如果可以 ...

  10. Windows 10 操作系统删除Administrator登录选项

    在win10操作系统锁屏界面登录选项中突然出现了两个用户选项,一个是自己微软账户登录的用户,另一个是Administrator登录选项,每次看到好别扭,怎么去掉呢? 一.以管理员身份运行命令提示符(c ...