How to pass a variable by name to a Thread in Python?

49,885

Solution 1

Use the kwargs parameter:

threading.Thread(target=self._thread_function, args=(arg1,),
                 kwargs={'arg2':arg2}, name='thread_function').start()

Solution 2

you can also use lambda to pass args

threading.Thread(target=lambda: self._thread_function(arg1, arg2=arg2, arg3=arg3)).start()
Share:
49,885
Dylan
Author by

Dylan

Updated on August 24, 2021

Comments

  • Dylan
    Dylan over 2 years

    Say that I have a function that looks like:

    def _thread_function(arg1, arg2=None, arg3=None):
        #Random code
    

    Now I want to create a thread using that function, and giving it arg2 but not arg3. I'm trying to this as below:

    #Note: in this code block I have already set a variable called arg1 and a variable called arg2
    threading.Thread(target=self._thread_function, args=(arg1, arg2=arg2), name="thread_function").start()
    

    The above code gives me a syntax error. How do I fix it so that I can pass an argument to the thread as arg2?