I'm currently trying to figure out how threads work in python.
I have the following code:
def func1(arg1, arg2):
print current_thread()
....
class class1:
def __init__():
....
def func_call():
print current_thread()
t1 = threading.Thread(func1(arg1, arg2))
t1.start()
t1.join()
What I noticed is that both prints output the same thing. Why is the thread not changing?
You are calling the function before it is given to the Thread
constructor.
Also, you are giving it as the wrong argument (the first positional argument to the Thread constructor is the group
). Assuming func1
returns None
what you are doing is equivalent to calling threading.Thread(None)
or threading.Thread()
.
This is explained in more detail in the threading docs.
To make your code work try this:
t1 = threading.Thread(target=func1, args=(arg1, arg2))
t1.start()
t1.join()
You're executing the function instead of passing it. Try this instead:
t1 = threading.Thread(target = func1, args = (arg1, arg2))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With