好的,我想用python编程一个服务器。 因此,我打开了一个套接字并等待输入。 当我得到一个输入时,我会得到一个进一步的套接字和地址
因为我想同时实现多个连接,所以我研究了python中的多线程
我使用以下方法创建线程:
t = Thread(target=input, args=(conn, address, ))
t.start()
我的输入方法如下所示:
def input(conn, address): [...]
现在,如果通过这种方式,我得到以下stacktrace:
Exception in thread Thread-1:
Traceback (most recent call last): File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner self.run()
File "/usr/lib/python3.8/threading.py", line 870, in run self._target(*self._args, **self._kwargs)
TypeError: input expected at most 1 argument, got 2
如果我删除地址(并只提供conn),它将打印以下内容:
<socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.0.0.9', 3306), raddr=('10.0.0.9', 32908)>
我该怎么理解呢
问题的解决办法: 我需要通过self.input而不是input调用该方法
input是一个build-in python function,它得到一个参数,因此当您试图在线程python中使用input时,您可能希望使用内置的input函数。更改函数名称将解决此问题:
PS:这种方法不是处理多线程网络的好方法
相关问题 更多 >
编程相关推荐