python - 线程中的Python套接字recv
问题描述
这是我的问题。我在 lua 上有一个服务器,它通过套接字发送数据。数据不断变化——它是一个交换交易流。我作为客户端的 python 脚本应该接收数据。
def listen():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
sock.connect(("localhost", 1111))
with BytesIO() as response_bytes:
while True:
try:
fragment = sock.recv(8196)
print("Фрагмент: {}".format(fragment))
except Exception:
pass
if __name__ == "__main__":
t2 = threading.Thread(listen())
t2.start()
while True:
print ("test")
主线程等待 sock.recv(8196) 行。我希望来自套接字的数据被并行接受,并且主流继续工作。当前代码会阻塞 main 的性能,直到执行 listen。我不熟悉 Python 中的多个任务。可以做出哪些决定?
解决方案
您必须将listen
函数传递给threading.Thread()
. 您在主线程中调用该函数,等待它完成,然后传递它的返回值(这只是None
,因为该函数从不返回任何内容)。
t2 = threading.Thread(target = listen)
推荐阅读
- sql - Oracle:分层查询中的编号组
- tensorflow - Tensorflow 2.0 100% 使用所有 CPU 内核
- asynchronous - SqlKata - 使分页查询异步
- ios - 表格单元格附加到顶部
- flutter - Flutter:如何让 ListView 占据可用的父级高度
- docker - 在 Docker 工具箱中运行 Git 克隆命令
- python - 如何将 Django 会话转换为新格式?
- jinja2 - saltstack 状态文件:如何通过 Jinja 访问盐粒中的列表元素
- assembly - 使用 resb 保留什么内存
- sql - Oracle:在运算符中获取空值?