TypeError: recv_thread() argument after * must be an iterable, not socket

错误

TypeError: recv_thread() argument after * must be an iterable, not socket的问题。

原因

这个错误是由于在创建一个线程时,将socket对象作为args参数传递给了recv_thread函数,而args参数需要一个可迭代的对象,比如元组或列表。

解决办法

可以通过在socket对象后面加一个逗号,将其转换为一个元组,来解决这个问题。代码是这样的:

复制代码
def recv_thread(sock):
    while True:
        data = sock.recv(1024).decode()

thread = threading.Thread(target=recv_thread, args=(s))

可以改为:

复制代码
def recv_thread(sock):
    while True:
        data = sock.recv(1024).decode()
        
thread = threading.Thread(target=recv_thread, args=(s,))

这样就可以避免TypeError: recv_thread() argument after * must be an iterable, not socket的错误了。

(1) Python Threading module Error argument after * must be an iterable, not int. multithreading - Python Threading module Error argument after * must be an iterable, not int - Stack Overflow.

(2) TypeError: send() argument after * must be an iterable, not socket in .... [Solved]TypeError: send() argument after * must be an iterable, not socket in Python.

(3) Python threading error - must be an iterable, not int. multithreading - Python threading error - must be an iterable, not int - Stack Overflow.

(4) python - TypeError: add() argument after * must be an iterable, not .... python - TypeError: add() argument after * must be an iterable, not Settings - Stack Overflow.

相关推荐
心灵宝贝8 小时前
CentOS 7 安装 bzip2-libs-1.0.6-13.el7.x86_64.rpm 的详细步骤
linux·运维·centos
碳酸的唐9 小时前
A* 工程实践全指南:从启发式设计到可视化与性能优化
python·神经网络
九皇叔叔10 小时前
Linux Shell 函数:从定义到实战,让脚本更高效
linux·运维·chrome·shell
倔强青铜三12 小时前
苦练Python第64天:从零掌握多线程,threading模块全面指南
人工智能·python·面试
isyangli_blog13 小时前
(6)数据中心、台式(塔式)服务器、机架式服务器、刀片式服务器
运维·服务器
tq0213 小时前
Cookie和Seeion在客户端和服务端的角色作用
运维·服务器·安全
青衫客3613 小时前
浅谈 Protobuf——高效、安全的跨语言通信基石
服务器·安全·远程调用·protobuf
Miki Makimura14 小时前
Reactor 模式实现:从 epoll 到高并发调试
运维·服务器·c++·学习
Q264336502314 小时前
【有源码】基于Hadoop生态的大数据共享单车数据分析与可视化平台-基于Python与大数据的共享单车多维度数据分析可视化系统
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计