Помогите пожалуйста разобраться с потоками.
Я всегда запускал потоки с помощью ThreadPoolExecutor(max_workers=N)
но сейчас встретил такой подход:
for i in range(cfg_threads_count):
worker = tWorker(app)
worker.setDaemon(True)
worker.start()
3 вопроса:
- лучше это или хуже, чем ThreadPoolExecutor?
- что дает setDaemon()?
в доках написано что сейчас стоит делать thread.daemon = True, и что программа завершает работу если нет активных не-демон потоков.
Получается, если все потоки запустить как демоны - программа(главный поток) тут же завершит работу?
- и как применить setDaemon(), если запускаешь через ThreadPoolExecutor?