Python循环,直到达到最大数量
我的工具随机停止,似乎所有线程都是“幽灵” 它是如何工作的: 刀具循环直到同时运行的最大允许螺纹数,在本例中为20。当一个线程结束时,它开始下一个线程 问题: 在这样做了一个小时之后,该工具被困在运行的20个线程中,但什么也没有发生 提前谢谢大家Python循环,直到达到最大数量,python,python-3.x,python-multithreading,Python,Python 3.x,Python Multithreading,我的工具随机停止,似乎所有线程都是“幽灵” 它是如何工作的: 刀具循环直到同时运行的最大允许螺纹数,在本例中为20。当一个线程结束时,它开始下一个线程 问题: 在这样做了一个小时之后,该工具被困在运行的20个线程中,但什么也没有发生 提前谢谢大家 maxthreadcount = 20 while True: if threading.active_count() < maxthreadcount: threading.Thread(target=Deale
maxthreadcount = 20
while True:
if threading.active_count() < maxthreadcount:
threading.Thread(target=Dealer).start()
您需要在之前创建的线程的作业(本例中为打印命令)完成后终止它们 请从以下方面查看此示例: 我认为您应该在执行
打印后调用self.terminate()
。如下所示:
class经销商():
定义初始化(自):
self.\u running=True
def运行(自):
打印(“线程启动”)
return self.terminate()
def终止(自我):
self.\u running=False
编辑
我还相信,在这种程度上,您可以使用python的ThreadPool
。您可以在分配的任务结束后,将线程重新用于新任务,而不是自己生成线程。为什么不在线程时将循环设置为。active_count()
?您的代码将继续循环并无限期地执行if语句测试。所有线程都在这样做吗?
def Dealer():
print("thread started")
return
class CountdownTask:
def __init__(self):
self._running = True
def terminate(self):
self._running = False
def run(self, n):
while self._running and n > 0:
print('T-minus', n)
n -= 1
time.sleep(5)
c = CountdownTask()
t = Thread(target = c.run, args =(10, ))
t.start()
...
# Signal termination
c.terminate()
# Wait for actual termination (if needed)
t.join()