Как сохранить тип переменной при запуске нового потока на Python - PullRequest
1 голос
/ 02 августа 2020

У меня есть эта функция:

import threading

def threaded(fn):
    def wrapper(*args, **kwargs):
        thread = threading.Thread(target=fn, args=args, kwargs=kwargs)
        thread.start()
        return thread
    return wrapper

И я использую ее, чтобы заставить другие мои функции работать в новом потоке следующим образом:

@threaded
def createUser(user: User):
    print("\nUser name:" + str(user.name))
   ...

Метод createUser отлично работает когда я вызываю его без этой нотации, но когда он выполняется в новом потоке, я получаю следующее сообщение об ошибке:

AttributeError: 'NoneType' object has no attribute 'name'

Кто-нибудь знает, как я могу избежать этой ошибки и сохранить переменную, введенную внутри этого вызова потока ? Я также попытался запустить его как обычный вызов потока, например:

threading.Thread(target=createUser, args=[user]).start()

Но он все равно не работает!

...