守护进程

# 守护进程
    # 子进程转换成的守护进程
    # 守护进程会随着主进程的代码执行完毕而结束

# 下面的例子,当主进程执行结束了,但子进程还在执行,子进程没有结束
# import time
# from multiprocessing import Process
#
#
# def func():
#     while True:
#         time.sleep(0.5)
#         print('我还活着')
#
# if __name__ == '__main__':
#     Process(target=func).start()
#     i = 0
#     while i < 10:
#         print('我socketserver')
#         time.sleep(1)
#         i += 1

# 如果想要当主进程执行结束了,让其子进程也跟着结束,守护进程就可以达到这种情况,效果是当主进程结束时,守护进程也就结束了
# import time
# from multiprocessing import Process
#
#
# def func():
#     while True:
#         time.sleep(0.5)
#         print('我还活着')
#
# if __name__ == '__main__':
#     p = Process(target=func)
#     p.daemon = True     # 设置这个子进程为守护进程,必须在start之前设置
#     p.start()
#     i = 0
#     while i < 5:
#         print('我socketserver')
#         time.sleep(1)
#         i += 1

# 下面这个例子,创建了一个子进程、一个守护进程、当主进程代码执行完了后,守护进程也结束了,但是func2子进程还在执行。
# 说明守护进程会随着父进程的执行结束而结束,而子进程的生命周期如果比父进程的生命周期长,则父进程执行结束后,子进程依然会执行
# import time
# from multiprocessing import Process
#
#
# def func():
#     while True:
#         time.sleep(0.5)
#         print('我还活着')
#
# def func2():
#     print('in func2 start')
#     time.sleep(10)
#     print('in func2 finished')
#
# if __name__ == '__main__':
#     p = Process(target=func)
#     p.daemon = True     # 设置这个子进程为守护进程,必须在start之前设置
#     p.start()
#
#     Process(target=func2).start()
#
#     i = 0
#     while i < 5:
#         print('我socketserver')
#         time.sleep(1)
#         i += 1

import time
from multiprocessing import Process


def func():
    while True:
        time.sleep(0.5)
        print('我还活着')

def func2():
    print('in func2 start')
    time.sleep(10)
    print('in func2 finished')

if __name__ == '__main__':
    p = Process(target=func)
    p.daemon = True     # 设置这个子进程为守护进程,必须在start之前设置
    p.start()

    p2 = Process(target=func2)  # 在创建一个子进程
    p2.start()

    print(p2.is_alive())    # 判断进程是否还活着,活着返回True,没有活着返回Falsh

    p2.terminate()  # 结束一个子进程的方法,并不是调用此方法后,进程立马就被结束掉,而是要等待一个操作系统的响应过程时间

    time.sleep(2)

    print(p2.is_alive())  # 判断进程是否还活着,活着返回True,没有活着返回Falsh,这里返回了Falsh
    print(p2.name)  # 查看进程的属性,名字
    print(p2.pid)   # 查看进程的属性,pid

    i = 0
    while i < 5:
        print('我socketserver')
        time.sleep(1)
        i += 1

 

posted @ 2018-10-17 20:29  _小溢  阅读(300)  评论(0)    收藏  举报