Python网络线程

2024-03-28 20:45:28 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我想用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调用该方法


Tags: 方法inselfmosttargetinputaddress地址
1条回答
网友
1楼 · 发布于 2024-03-28 20:45:28

input是一个build-in python function,它得到一个参数,因此当您试图在线程python中使用input时,您可能希望使用内置的input函数。更改函数名称将解决此问题:

def _input(conn, address): [...]


t = Thread(target=_input, args=(conn, address, ))
t.start()

PS:这种方法不是处理多线程网络的好方法

相关问题 更多 >