python监听程关闭事件

本文介绍了如何在Python中使用`atexit`模块来监听程序关闭事件,并在程序终止时自动执行清理操作,如关闭连接池。示例代码展示了如何注册清理函数以确保资源管理的正确性。
摘要由CSDN通过智能技术生成

1,python监听程关闭事件

import atexit
import time


def cleanup():
    # 在这里执行清理操作,比如关闭连接池等
    print("监听到程序关闭事件")


# 注册清理函数 程序关闭时执行
atexit.register(cleanup)

def main():
    print('开始启动')
    # 阻塞一秒钟
    time.sleep(1)
    print('测试完毕')


if __name__ == "__main__":
    main()
Python 中,可以使用多线实现广播的发送和监听。发送广播消息可以在一个线中完成,而接收广播消息可以在另一个线中完成。下面是一个简单的 Python 代码示例,展示了如何使用多线实现广播的发送和监听: ```python import socket import threading # 广播地址和端口号 broadcast_address = ('255.255.255.255', 8888) # 创建 Socket 对象 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 设置 Socket 选项,允许广播 s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # 发送广播消息的函数 def send_broadcast_message(): while True: message = input("Input message to broadcast: ") s.sendto(message.encode(), broadcast_address) # 接收广播消息的函数 def receive_broadcast_message(): # 创建 Socket 对象 r = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定 IP 地址和端口号 r.bind(('0.0.0.0', 8888)) # 设置 Socket 选项,允许广播 r.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # 接收广播消息 while True: data, addr = r.recvfrom(1024) print("Received from {}: {}".format(addr, data.decode())) # 创建发送广播消息的线 send_thread = threading.Thread(target=send_broadcast_message) # 创建接收广播消息的线 receive_thread = threading.Thread(target=receive_broadcast_message) # 启动线 send_thread.start() receive_thread.start() # 等待线结束 send_thread.join() receive_thread.join() # 关闭 Socket s.close() ``` 在这个示例中,我们创建了两个函数:`send_broadcast_message` 和 `receive_broadcast_message`,分别用于发送和接收广播消息。我们使用 `threading.Thread` 方法创建了两个线,分别执行这两个函数。在主线中,我们等待这两个线结束,然后关闭 Socket。注意,在发送广播消息的线中,我们使用 `input` 方法从控制台读取用户输入,然后将其发送到广播地址。在接收广播消息的线中,我们创建了另一个 Socket 对象,用于接收广播消息。每次接收到广播消息后,我们输出到控制台。 需要注意的是,在多线中使用 Socket 时,要确保每个线使用的 Socket 对象是不同的。因此,在接收广播消息的线中,我们创建了另一个 Socket 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值