为什么我在Python的Threading中会得到TypeError错误?
为什么我在Python的Threading中会得到TypeError错误?
我有以下代码,基于我在SO上发现的一个示例,但运行时出现错误。请帮忙,我相信很简单:
def listener(port): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind(('',port)) sock.settimeout(1) # n second(s) timeout try: while True: data, addr = sock.recvfrom(1024) print data except socket.timeout: print 'Finished' def startListenerThread(port): threading.Thread(target=listener, args=(port)).start()
我得到的错误是:
Exception in thread Thread-1: Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 522, in __bootstrap_inner self.run() File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 477, in run self.__target(*self.__args, **self.__kwargs) TypeError: listener() argument after * must be a sequence, not int
admin 更改状态以发布 2023年5月20日
错误来自以下行:
threading.Thread(target=listener, args=(port)).start()
args
参数需要是一个序列,我想你的意图是使用元组,但是如果将单个值括在括号中,则无法实现此目的。这是你需要改变的内容:
threading.Thread(target=listener, args=(port,)).start()
这里是一个简单的例子,展示了它们之间的区别:
>>> (100) # this is just value 100 100 >>> (100,) # this is a tuple containing the value 100 (100,)