# #守护进程
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

最新文章

  1. Pandas-数据整理
  2. iconfont 图标字体
  3. Java多线程与并发库高级应用-java5线程并发库
  4. 查看Linux服务器各种信息方法
  5. Android_UI_点击按钮切换背景效果实现
  6. Tomcat修改网址旁边的小图标
  7. WEBBROWSER中模拟鼠标点击(SendMessage/PostMessage)
  8. (转)PHP函数spl_autoload_register()用法和__autoload()介绍
  9. 合理计划 dictionary cache 大小
  10. 翻译 GITHUB上HOW TO BE A GOOD PROGRAMMER
  11. 微信开放平台 获取 component_verify_ticket
  12. 四大OLAP工具选型浅析
  13. 第二次项目冲刺(Beta阶段)5.21
  14. 手把手教你用webpack3搭建react项目(开发环境和生产环境)(一)
  15. mybatis批量插入报错
  16. SSM学习笔记
  17. springBoot整合多数据源
  18. 纯CSS打造萌萌哒大白
  19. sql---->sql-summary&mysql-summary
  20. 【jQuery】jQuery与Ajax的应用

热门文章

  1. Django:学习笔记(2)——创建第一个应用
  2. React:快速上手(5)——掌握Redux(2)
  3. 113. Path Sum II(求等于某个数的所有路径)
  4. UEditor文本编辑器
  5. CF715E Complete the Permutations(第一类斯特林数)
  6. Sybase:SybaseIQ的几个系统过程
  7. Java学习之垃圾回收
  8. QMesageBox的使用
  9. Spring Boot JDBC 连接数据库
  10. camera frame work v3 note