看看这个小代码:
for server in serverlist:
while(threading.activeCount() >= maxThreads):
time.sleep(0.5)
threading.Thread(target=pingServer, args=server).start()
print("Number of Threads running: " + str(threading.activeCount()))
serverlist包含大量主机(1000+)。对于每个条目,For循环使用pingServer函数(pings服务器)创建并启动一个新线程。为了确保不会产生太多线程,maxThreads有一个while循环。你知道吗
但是,无论maxThreads是2、5、10还是100。Python从不产生超过2个线程,因此列表将永远占用。你知道吗
即使我删除while循环(它应该生成无限个线程),它最多也只能生成2个线程
为什么会这样?你知道吗
谢谢你的回答。我发现了问题所在。你知道吗
pingServer的一部分做了一些日志记录,并锁定了一个文件,这使得其他的一切都等待。你知道吗
相关问题 更多 >
编程相关推荐