I was studying the python threading and came across join()
.
The author told that if thread is in daemon mode then i need to use join()
so that thread can finish itself before main thread terminates.
but I have also seen him using t.join()
even though t
was not daemon
example code is this
import threading
import time
import logging
logging.basicConfig(level=logging.DEBUG,
format="(%(threadName)-10s) %(message)s",
)
def daemon():
logging.debug('Starting')
time.sleep(2)
logging.debug('Exiting')
d = threading.Thread(name="daemon", target=daemon)
d.setDaemon(True)
def non_daemon():
logging.debug('Starting')
logging.debug('Exiting')
t = threading.Thread(name="non-daemon", target=non_daemon)
d.start()
t.start()
d.join()
t.join()
i don’t know what is use of t.join()
as it is not daemon and i can see no change even if i remove it