Я создал класс с функцией-оберткой для выполнения их в отдельном потоке.Я хочу остановить поток с помощью соответствующего флага.Но я не могу вызвать свою многопоточную функцию.Я не понимаю, какие параметры мне нужно передать в декоратор или / и функцию.
#/usr/bin/python3
import threading
class ThreadedFunction():
def threaded(fn, callback_func, isStop):
"""To use as decorator to make a function call threaded.
It will call the callback_func when the function returns.
Needs import
from threading import Thread"""
def wrapper(*args, **kwargs):
def do_callback():
callback_func(fn(args, kwargs))
thread = threading.Thread(target=do_callback)
thread.start()
if isStop:
print("Exit from thread")
thread._stop()
return thread
return wrapper
@threaded
def wannaThread(self, isStop):
while isStop != True:
print("I want to run this in separate thread!")
if __name__ == '__main__':
tfunction = ThreadedFunction.wannaThread(True)
tfunction = ThreadedFunction.wannaThread(False)
вывод:
TypeError: threaded() missing 2 required positional arguments: 'callback_func' and 'isStop'
Как правильно передать параметры в аннотацию или вызвать функцию?Как правильно остановить поток?Спасибо за потраченное время!