python - Linux中的内存泄漏,但不是Windows
问题描述
我正在制作一个脚本,它将从第三方 Web 套接字接收域,将它们导入队列,然后将 HTTP 请求发送到域以查明它们是否可访问。但是,因为我正在以如此高的速率从 Web 套接字接收域,所以我试图在脚本中实现线程化,以使多个线程发送 HTTP 请求以跟上我接收它们的速率。但是,当我在我的 Linux 机器上运行脚本时,我遇到了我的 Windows 机器上不存在的内存泄漏问题,我理想情况下希望它在我的 Linux 机器上运行。
到目前为止,我已经尝试确保我的 Linux 机器使用相同或更高版本的 Python(3.8.3),并尝试了多个 HTTP 模块(请求、urllib3 和 HTTP 客户端),但它们都表现出相同的问题。我希望有人能够提供帮助,因为我在过去几周试图自己解决这个问题,但无法提出任何问题,受影响的代码是这样的:
import http.client
import threading
from queue import Queue
enclosure_queue = Queue(maxsize=500)
# Thread that adds the domains acquired from the web socket into the queue
def scan_domain(q):
while True:
domain = q.get()
try:
conn = http.client.HTTPSConnection(domain)
conn.request("GET", "/")
r1 = conn.getresponse()
response = r1.read()
conn.close()
domain = "http://" + domain
result = response.decode()
print("Connected to - " + domain)
q.task_done()
except:
print("Unable to connect to - " + domain)
q.task_done()
for i in range(30):
t = threading.Thread(target=scan_domain, args=(enclosure_queue,))
t.setDaemon(True)
t.start()
我省略了将域添加到队列中的线程,因为它可能包含敏感信息,但是,我在不同的脚本中使用了该确切部分的代码,该脚本未显示此问题,因此该部分 100% 不是问题。