我在使用 Python 线程和在参数中发送字符串时遇到问题。
def processLine(line) :
print "hello";
return;
.
dRecieved = connFile.readline();
processThread = threading.Thread(target=processLine, args=(dRecieved));
processThread.start();
其中 dRecieved 是连接读取的一行字符串。它调用了一个简单的函数,该函数目前只有一个打印“hello”的工作。
但是我收到以下错误
Traceback (most recent call last):
File "C:\Python25\lib\threading.py", line 486, in __bootstrap_inner
self.run()
File "C:\Python25\lib\threading.py", line 446, in run
self.__target(*self.__args, **self.__kwargs)
TypeError: processLine() takes exactly 1 arguments (232 given)
232 是我要传递的字符串的长度,所以我猜它会将它分解成每个字符并尝试传递这样的参数。如果我只是正常调用该函数,它工作正常,但我真的很想将它设置为一个单独的线程。
原文由 Anonymous 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在尝试创建一个元组,但您只是在括号中加上了一个字符串 :)
添加一个额外的’,’:
或使用括号列出:
如果您注意到,从堆栈跟踪:
self.__target(*self.__args, **self.__kwargs)
*self.__args
将您的字符串转换为字符列表,并将它们传递给processLine
函数。如果您将一个元素列表传递给它,它将将该元素作为第一个参数传递——在您的例子中是字符串。