Python线程string参数
我有一个Python线程的问题,并在参数中发送一个string。
def processLine(line) : print "hello"; return;
。
dRecieved = connFile.readline(); processThread = threading.Thread(target=processLine, args=(dRecieved)); processThread.start();
其中dRecieved是由连接读取的一行的string。 它所称的一个简单的function就是现在只有一个打印“你好”的工作。
不过,我得到以下错误
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是我想要传递的string的长度,所以我想它把它分解成每个字符并试图传递这样的参数。 它工作正常,如果我只是调用函数正常,但我真的想把它设置为一个单独的线程。
你正试图创build一个元组,但是你只是用一个string括起来:)
添加一个额外的',':
dRecieved = connFile.readline() processThread = threading.Thread(target=processLine, args=(dRecieved,)) # <- note extra ',' processThread.start()
或者使用括号来列表:
dRecieved = connFile.readline() processThread = threading.Thread(target=processLine, args=[dRecieved])) # <- 1 element list processThread.start()
如果你注意到,从堆栈轨迹: self.__target(*self.__args, **self.__kwargs)
*self.__args
将您的string转换为一个字符列表,并将它们传递给processLine
函数。 如果你传递一个元素列表,它会传递这个元素作为第一个参数 – 在你的情况下,string。