我应该在python中显式关闭zeromq套接字吗?

Ji *_*ANG 7 python zeromq

在类似C/C++的语言中,显式关闭zeromq套接字是必须的,我理解.但是在一些更高级的语言中,例如php和python,它们都有垃圾收集机制,我是否需要显式关闭套接字?

在PHP中,没有ZMQSocket :: close(),在python中,pyzmq的doc说socket.close()可以省略,因为它会在垃圾收集过程中自动关闭.

所以我的问题是,我是否需要手动关闭它?...

Kon*_*kiy 3

使用完任何 I/O 资源后,关闭它们始终是正确的。垃圾收集器最终会将它们关闭。一旦最后一个引用超出范围,它可能会立即关闭它。当您的程序退出时,它可能会关闭它。当您等待它执行此操作时,资源保持打开状态,占用内存、消耗文件指针并消耗系统资源。对于一个小的、寿命短的程序来说,这可能不是一个大问题,但如果你的软件寿命长或建立了很多连接,这会反过来伤害你。

答案是:视情况而定。如果您的系统依赖于套接字关闭,那么显式关闭它们会更安全。如果您同意套接字在未来某个不确定的时间关闭,那么您可以通过让垃圾收集器处理它来节省一些编码时间并简化您的程序。