我有一段代码,试图在新线程中发送UDP数据报
import threading, socket
address = ("localhost", 9999)
def send(sock):
sock.sendto("Message", address)
print "sent"
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
threading.Thread(target=send, args=(s)).start()
但是,当我尝试将套接字作为函数的参数时,会引发TypeError异常:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in
self.__target(*self.__args, **self.__kwargs)
TypeError: send() argument after * must be a sequence, not _socketobject
那是什么意思?
您需要在变量
s
后添加逗号-,
。仅将s发送到args=()是尝试解压缩多个参数,而不是仅发送单个参数。所以你会有
threading.Thread(target=send, args=(s,)).start()
此外,splat-
*
运算符可能在解释其用法和一般解压缩参数的问题中很有用相关问题 更多 >
编程相关推荐