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

join 等待所有子进程执行完毕之后,主进程在向下执行

(1) 1个子进程通过join加阻塞,进行同步控制,放在主程序之前

(2)多个子进程通过join加阻塞,把进程加入列表,进行同步控制

#守护,无join

#------------------主线程运行正常结束,子线程强制结束--------------------------------#

#非守护,无join

#------------------主线程正常结束-----------子线程运行正常结束(结束顺序不一定)--------------------

#守护,join(阻塞)

#------------------子线程运行正常结束-----------主线程正常结束--------------------------------#

#非守护,join(阻塞)

#------------------子线程运行正常结束-----------主线程正常结束--------------------------------#

p.daemon = True#注意一个线程默认不是守护线程,也就是说默认值是False

#结论:

#☆☆☆对于含有join的代码而言,一定有主线程在子线程之后才执行完。

#☆☆☆对于没有join的代码而言:如果守护,只要主线程关闭,子线程及时没执行完也必须关闭,;

# 如果非守护,主线程与子线程结束顺序不一定

p.start()

# p.join()#(挡住,无法执行join以后的语句)

守护进程(daemon)

可以给子进程贴上守护进程的名字,该进程会随着主进程代码执行完毕而结束

(实际为主进程守护)

(1)守护进程会在主进程代码执行结束后就终止

(2)守护进程内无法再开启子进程,否则抛出异常(了解)

(3)正常情况下,主进程默认等待子进程全部结束而结束

(4)守护进程必须写在start之前进行设置

语法:

p.daemon = True

p.start()

(5) 当多个子进程并发执行时,默认主进程等待子进程

守护进程 守护的是 主进程 , 主要主进程里面的代码执行完毕

对应是守护进程的那个子进程立即终止,其他非守护进程继续

守护进程是主进程的代码执行到最后一行了,即为结束。

(6) 守护进程的实际用途:报活

如果最大的监控系统挂掉,就让其他服务器停掉

就好比厂子倒闭了,员工回家放假

import time
from multiprocessing import Process def alive():
while True:
print('1号主机发送日志消息,iam ok!')
time.sleep(5)
def func():
while True:
print('统计各个主机的系统日志,维护数据库管理')
time.sleep(5)
if __name__ == '__main__':
p = Process(target=alive)
p.daemon = True
p.start()
p = Process(target=func)
p.start()
p.join() # 加上join之后,等待所有子进程执行完毕后,在运行主进程后面的代码
print('............')
1号主机发送日志消息,iam ok!
统计各个主机的系统日志,维护数据库管理
1号主机发送日志消息,iam ok!
统计各个主机的系统日志,维护数据库管理
1号主机发送日志消息,iam ok!
统计各个主机的系统日志,维护数据库管理
1号主机发送日志消息,iam ok!
统计各个主机的系统日志,维护数据库管理
1号主机发送日志消息,iam ok!
统计各个主机的系统日志,维护数据库管理
1号主机发送日志消息,iam ok!
统计各个主机的系统日志,维护数据库管理

(4)进程---daemon守护线程和join阻塞的更多相关文章

  1. 015.4守护线程和join

    内容:守护线程.join方法#####################守护线程通过开启线程之前调用setDaemon()方法,变成后台线程,前台线程运行完,后台线程自动会结束#########例子 c ...

  2. join和 Daemon守护线程

    一.前言 一个程序至少有一个主线程,主线程启动子线程后,它们之间并没有隶属关系.主线程和子线程执行是并行的,相互独立.主线程执行完毕后默认不等子线程执行结束就接着往下走了,如果有其他程序就会运行另外的 ...

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

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

  4. 守护进程vs 守护线程

    # #守护进程 from multiprocessing import Process import os,time,random def task(): print('%s is running' ...

  5. Python 开启线程的2中方式,线程VS进程(守护线程、互斥锁)

    知识点一: 进程:资源单位 线程:才是CPU的执行单位 进程的运行: 开一个进程就意味着开一个内存空间,存数据用,产生的数据往里面丢 线程的运行: 代码的运行过程就相当于运行了一个线程 辅助理解:一座 ...

  6. 守护进程VS守护线程

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

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

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

  8. java 多线程:Thread类常用方法:setPriority优先级、interrupt中断标记、suspend暂停与唤醒resume(已过时);daemon守护线程

    常用方法: boolean isAlive() 测试此线程是否存活. boolean isDaemon() 测试此线程是否为守护程序线程. static void sleep?(long millis ...

  9. Java:多线程<四> Lock、停止线程、守护线程、join、优先级&yield

    Java1.5以后,Condition将Object监视器方法(wait, notify, notifyAll)分解成截然不同的对象,以便通过这些对象与任意Lock实现组合使用为每个对像提供多个等待s ...

随机推荐

  1. 12: xlrd 处理Excel文件

    1.1 xlrd处理.xlsx 文件 1.xlrd常用方法 #!/usr/bin/python # coding:utf-8 # 用xlrd读取Excel文件基本用法 import sys impor ...

  2. ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98) [30-Jan-2018 16:12:27] ERROR: FPM initialization failed解决方法

    1.php启动之后发现访问nginx出现502错误,检查nginx.conf发现指定的php socket不存在 2.解决方法nginx修改陈这样,直接把绿色部门的socket写成本地地址+端口就可以 ...

  3. aop的使用

    最近考虑需要记录客户对项目的操作日志. 如果在每一个客户都有可能操作的类增加日志对象,改动量太大,同时如果有新的功能增加,又要在新的功能上增加日志操作. 因此考虑后决定采用spring的aop功能. ...

  4. 给sublime设置格式化代码的快捷键

    sublime中自建的有格式化按钮: Edit  ->  Line  ->  Reindent 只是sublime并没有给他赋予快捷键,所以只需加上快捷键即可 Preference  -& ...

  5. Git 配置命令设置

    目录 查看配置文件路径: 查看其他配置命令: 修改配置文件默认路径: 查看配置文件路径: 查看系统级别配置: git config -e –-system D:/Program Files/Git/m ...

  6. FJUT3591 侦测到在途的聚变打击(最小不可相交路径覆盖)题解

    题意:给你n个点,点间m条路,给出在每条路要走的时间.现在有q个任务,要摧毁q个点,每次提供ci和ti表示在时间ti摧毁点ci(必须正好在时间ti才能摧毁),每个点可能需要多次摧毁(同一时间能在同一个 ...

  7. 【做题】HDU6331 Walking Plan——矩阵&分块

    题意:给出一个有\(n\)个结点的有向图,边有边权.有\(q\)组询问,每次给出\(s,t,k\),问从\(s\)到\(t\)至少经过\(k\)条边的最短路. \(n \leq 50, \, q \l ...

  8. iis默认文档有什么用?

    设置默认文档就是指在只输入路径,不输入具体网页名的时候,浏览器显示的默认网页名称. 比如说,服务器地址:http://123.xxx.com,在未设置默认文档的时候或指定的默认文档不存在时,要正常访问 ...

  9. ZOJ 3632 ----dp+优先队列

    上个礼拜学长讲了优先队列的说.... emmmmmm.... 看着题解敲了一题...先m下. #include<cstring> #include<algorithm> #in ...

  10. phpstorm软件配置端口问题

    phpstorm默认的端口号是:63342 但是我装的apache服务器的默认端口是80 网上查找资料,都说可以加listen的端口,比如这里   #Listen 12.34.56.78:80 Lis ...