用python写一客户端,一开始代码:
def tcp_connect():
while True:
try:
sock = socket.socket()
sock.connect(addr)
logger.info('tcp connected!')
return sock
except:
time.sleep(1)
continue
如果客户端连接不到服务器,这样会造成内存一直增加,gc不会回收socket对象。
以下代码能够回收:
def tcp_connect():
while True:
try:
sock = socket.socket()
sock.connect(addr)
logger.info('tcp connected!')
return sock
except:
sock.close()
time.sleep(1)
continue
不关闭socket不会回收,即使引用计数为0.
下面代码会更好:
def tcp_connect():
sock = socket.socket()
while True:
try:
sock.connect(addr)
logger.info('tcp connected!')
return sock
except:
time.sleep(1)
continue