如何将元组值作为参数发送给作为线程启动的函数?

2024-10-01 11:33:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类函数,我想把它作为线程启动。函数接受元组值作为参数。这个函数运行得很好,但是我的初始设置抛出了一个TypeError。下面是一些示例代码:

import threading

class Test:
    def __init__(self):
        t = threading.Thread(target=self.msg, args=(2,1))
        t.start()
        print "started thread"

    # msg takes a tuple as its arg (e.g. tupleval = (0,1))
    def msg(self,tupleval):
        if(tupleval[0] > 1):
            print "yes"
        else:
            print "no"


test = Test()
test.msg((2,2))
test.msg((0,0))

然后输出如下:

^{pr2}$

它似乎适用于结尾的两个显式调用,但是初始的setup调用抛出TypeError。我尝试过用各种方法将值打包到一个元组中,但还是无法消除这个错误。思想?在


Tags: 函数代码testself示例参数defmsg
2条回答

这看起来真的很难看,但我相信它应该是args=((2,1),)(或者{}可能看起来稍微好一点)。在

args应该是函数所有参数的元组,因此要传递一个元组,您需要一个元组的元组。此外,Python要求您为一个包含一个元素的元组添加额外的逗号,以区别于仅仅用括号包装表达式。在

args接受传递给函数的参数元组。当你说args=(2,1)时,你不是告诉它用一个参数(2,1)调用{};而是告诉它用两个参数21来调用它。在

你想要args=((2,1),)。在

相关问题 更多 >