"""守护父进程的子进程"""
"""
可以在调用进程实例对象的方法start()之前将属性daemon的值设置为True,从而将进程设置为守护进程。
守护进程是为了守护父进程而存在的子进程,当父进程结束时,守护进程没有存在的意义。
守护进程会随着父进程的结束而立刻结束。
"""
from multiprocessing import current_process, Process
import time
class MyProcess(Process):
def run(self):
print('子进程%d启动' % current_process().pid)
time.sleep(2)
print('子进程%d结束' % current_process().pid)
def main():
print('父进程%d启动' % current_process().pid)
mp = MyProcess()
mp.daemon = True
mp.start()
time.sleep(1)
print('父进程%d结束' % current_process().pid)
if __name__ == '__main__':
main()
####################################################################
"""守护父线程的子线程"""
"""
在创建线程实例对象时,可以将参数daemon的值设置为True,从而将线程设置为守护线程。
此外,也可以在调用线程实例对象的方法start()之前将属性daemon的值设置为True,从而将线程
设置为守护线程。
守护线程是为了守护父线程而存在的子线程,当父线程结束时,守护线程没有存在的意义。
守护线程会随着父线程的结束而立刻结束。
"""
from threading import current_thread, Thread
import time
class Mythread(Thread):
def run(self):
print('子线程%s启动' % current_thread().getName())
time.sleep(2)
print('子线程%s结束' % current_thread().getName())
print('父线程%s启动' % current_thread().getName())
mt = Mythread()
mt.setDaemon(True)
#mt.daemon = True
mt.start()
time.sleep(1)
print('父线程%s结束' % current_thread().getName())