守护进程与端口复用

文章介绍了守护进程在Unix/Linux系统中的角色,如何创建子进程并确保主进程在所有子进程完成后退出。同时讨论了如何在TCP通信中通过端口复用功能优化资源利用。
摘要由CSDN通过智能技术生成

守护进程

        守护进程(Daemon Process)是在Unix、Linux和其他类Unix操作系统中的一个后台服务进程,独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程一般在系统启动时开始运行,并且长时间运行。它们常常在系统后台默默执行,等待随时被激活以处理系统事件或者提供服务。

import multiprocessing
import time


# 定义进程所需要执行的任务
def task():
    for i in range(10):
        print("任务执行中...")
        time.sleep(0.2)

if __name__ == '__main__':
    # 创建子进程
    sub_process = multiprocessing.Process(target=task)
    sub_process.start()

    # 主进程延时0.5秒钟
    time.sleep(0.5)
    print("over")
    exit()
------------------------------------------------------
任务执行中...
任务执行中...
任务执行中...
over
任务执行中...
任务执行中...
任务执行中...
任务执行中...
任务执行中...
任务执行中...
任务执行中...


    # 总结: 主进程会等待所有的子进程执行完成以后程序再退出

如果想让主进程执行完毕,子进程还没执行完毕就销毁不再执行,需要怎么做?

                    答:可以设置守护主进程 或者 在主进程退出之前 让子进程销毁。设置守护主进程的主要作用是当主进程终止时,守护进程会自动终止

为了保证子进程能够正常的运行,主进程会等所有的子进程执行完成以后再销毁,设置守护主进程的目的是主进程退出子进程销毁,不让主进程再等待子进程去执行。

端口复用

TCP网络通信中有一个三次握手,四次挥手,最后一次挥手的时候,端口不是立马释放的,会被占用大致2ms。解决方法:使用端口复用函数设置,让一个网络程序一旦停止,该网络程序所使用的端口立马释放,进行复用。如果想使用端口复用,设置的时机是在服务器绑定端口之前。

    # 设置端口号复用,让程序退出端口号立即释放
    tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) 

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值