Вам необходимо прекратить ранее созданные потоки после выполнения их задания (в данном случае print
).
Взгляните на этот пример из этой статьи :
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()
Я думаю, вам следует позвонить self.terminate()
после выполнения print
. Примерно так:
class Dealer():
def __init__(self):
self._running = True
def run(self):
print("thread started")
return self.terminate()
def terminate(self):
self._running = False
Редактировать
Я также считаю, что вы можете использовать python ThreadPool
для этой степени. Вместо того, чтобы создавать потоки самостоятельно, вы можете повторно использовать потоки после завершения назначенной им задачи для новых задач.