python 将函数传递给线程

python passing function to thread

如何像标准变量一样将函数传递给线程,

当我在 args 上传递函数时,我有一个不可迭代的错误

有我的代码摘要

from CallbackThread import CallbackThread
import time
import threading

class foo:
    def runSomthing(self,callback):
        #do things
        callthread = threading.Thread(target=self.newthread, args=(callback))
        callthread.start()

    def newthread(self,calback):
       print("runiing")
       while True:
           #if receve data (udp)
            data = 0
          #run mycallbacktest
          calback(data)


def mycallbacktest(i):
    print("hello world", i)

myobj = foo()
myobj.runSomthing(mycallbacktest)

我在类似的主题上看到过类似的东西 https://gist.github.com/amirasaran/e91c7253c03518b8f7b7955df0e954bb

并且我已经基于此进行了尝试,但我不确定这是在做什么,对我来说只是在线程完成时调用回调

class BaseThread(threading.Thread):
    def __init__(self, callback=None, callback_args=None, *args, **kwargs):
        target = kwargs.pop('target')
        super(BaseThread, self).__init__(target=self.target_with_callback, *args, **kwargs)
        self.callback = callback
        self.method = target
        self.callback_args = callback_args

    def target_with_callback(self):
        self.method()
        if self.callback is not None:
            self.callback(*self.callback_args)

但这并不能解决我想做的事情

按照宫城先生的建议,答案少了一个逗号,

应该是args=(callback,)而不是args=(callback)

(这个post是标记这个post关闭)