好的,所以我有一个功能,主线程
def main_thread(self, item):
print(item)
用
调用它item = self.queue.pop(0)
print(item)
threading.Thread(target=self.main_thread,args=(item)).start()
当我在调用线程之前打印它时,队列项是'某事',它打印正确。但由于某种原因,它总是变成一个列表s,o,m,e,t,h,i,n,g,
意思,我不能使用
def main_thread(self, item):
因为它说我试图传递10个参数,每个字母为1。 如果我使用
def main_thread(self, *args):
我只得到10个参数。我之前从未遇到过这个问题,但肯定必须有一个更好的方法,而不是重新建立字母串字母
答案 0 :(得分:3)
args应该是一个元组,你传递一个字符串,所以每个字符都被解释为一个参数:
args=(item,) # <- add a , to make a tuple
字符串是可迭代的,因此它等同于:
之间的差异In [2]: for ele in s:
...: print(s)
...:
foobar
foobar
foobar
foobar
foobar
foobar
In [3]: for ele in (s,):
print(s)
...:
foobar
答案 1 :(得分:2)
那是因为你没有将元组传递给函数。试试这个:
threading.Thread(target=self.main_thread,args=(item,)).start()