【发布时间】:2023-03-14 19:35:02
【问题描述】:
我正在努力让 python 定期运行一些线程函数并关闭线程(或重用相同的线程而不产生新的线程)。运行下面的代码时,每次运行函数时都会产生新线程,最终程序会一起崩溃/停止。
任务完成后是否可以关闭线程?
import threading
from Queue import Queue
import time
import socket
number_of_threads = 10
def check_server(address):
s = socket.socket()
s.settimeout(1)
try:
s.connect((address, 443))
return True
except:
return False
def get_online_servers(subnet):
def threader():
while True:
global online_servers
ip = q.get()
a = check_server(ip)
if a:
online_servers.append(ip)
q.task_done()
q = Queue()
for x in range(number_of_threads):
t = threading.Thread(target=threader)
t.daemon = False
t.start()
for i in range(1, 20):
ip = "{}.{}".format(subnet, i)
q.put(ip)
q.join()
return online_servers
if __name__ == '__main__':
while True:
online_servers = []
result = get_online_servers("10.0.0")
print result
time.sleep(5)
【问题讨论】:
标签: python multithreading python-2.7 python-multithreading