当前位置: 首页 > 知识库问答 >
问题:

Python网络线程

陶炫明
2023-03-14

好的,我想用python编程一个服务器。因此,我打开一个套接字,等待输入。当我得到一个输入,我得到一个进一步的套接字和地址。

因为我想同时实现多个连接,所以我研究了Python中的多线程。

我使用以下方法创建线程:

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

我的输入法如下:

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

现在,如果以这种方式,我得到下面的堆栈跟踪:

线程1中的异常:

回溯(最近的最后一次调用):文件“/usr/lib/python3.8/threading.py”,第932行,在内部自引导中。运行()

文件“/usr/lib/python3.8/threading.py”,第870行,运行自我_目标(*自我参数,**自我参数)

输入最多1个参数,得到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而不是输入来调用方法。

共有1个答案

麹耘豪
2023-03-14

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

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


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

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

 类似资料:
  • Python 提供了两个级别访问的网络服务。: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使

  • 5.4.2.网络和多线程 有了用户界面,接下来就应该考虑用户与服务端交互的实现方法了。在此,我们引入一个三方库来帮助我们访问 Twitter 的 API 服务。 在网络调用执行中,我们会发现界面响应不灵,这是因为网络操作是不可预知的。毕竟不能让网络操作把我们的界面卡死,因此我们在这里引入Android中的多线程机制,避免不必要的外部阻塞。

  • 一面与主管面一起 一面:60min 1. 自我介绍 2. 项目介绍 3. 手撕算法:任务调度(leetcode612)写了半天发现思路错了,然后叫面试官给我换了一个,分发糖果(leetcode135),过了。然后大概介绍思路。 4. 介绍面向对象 5. 介绍java运行时内存区 主管面:20min 1. 自我介绍 2. 项目介绍 3. 项目过程中的困难怎么解决的 4. 家庭介绍 5. 性格介绍 6

  • 当我完成自动化后,Chrome Web驱动程序仍在后台运行,是否可以自动关闭它,而无需通过任务管理器执行?

  • 本文向大家介绍详解Python Socket网络编程,包括了详解Python Socket网络编程的使用技巧和注意事项,需要的朋友参考一下 Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页、QQ 聊天、收发 email 等等。要解决网络上两台主机之间的进程

  • 本文向大家介绍python网络编程学习笔记(三):socket网络服务器,包括了python网络编程学习笔记(三):socket网络服务器的使用技巧和注意事项,需要的朋友参考一下 1、TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较。 步骤 TCP客户端 TCP服务器 第一步 建立socket对象  建立socket对象 第二步 调用co