多线程和网络总结

news/2025/10/7 20:17:38/文章来源:https://www.cnblogs.com/leijiajava/p/19128836

近期Python网络编程与多线程/多进程学习复盘

一、核心知识收获

1. 多线程与多进程编程

  • 多线程应用:实现图片下载(DownloadHanlder类继承Thread,重写run方法处理下载逻辑),利用线程并行处理网络IO任务,提高下载效率。
  • 多进程应用:拆分1亿元素大列表进行并行求和(Process类创建子进程,Queue实现进程间数据通信),理解“分而治之”思想在CPU密集型任务中的优势。
  • 关键区别:多线程适合IO密集型任务(如网络请求、文件读写),多进程适合CPU密集型任务(如大量计算);进程间需通过Queue等工具通信,线程可共享内存但需注意锁(threading.Lock)的使用。

2. TCP网络编程

  • 服务器端开发
    • 套接字(socket)创建:指定AF_INET(IPv4)和SOCK_STREAM(TCP),通过bind绑定IP与端口、listen监听连接、accept阻塞等待客户端连接。
    • 多线程处理客户端:每个客户端连接对应一个线程(如FileTransferHandler),避免单线程阻塞,支持多客户端同时访问。
    • 数据传输:需将数据编码为字节流(encode('utf-8')),二进制文件(如图片)需通过base64编码转为文本格式,结合JSON实现结构化数据传输。
  • 客户端连接
    • 工具连接:掌握CMD/PowerShell中通过Telnet(需启用Windows功能)、PowerShell原生命令(New-Object System.Net.Sockets.TCPClient)连接服务器的方法。
    • 自定义客户端:用socketconnect方法连接服务器,recv接收数据,实现与服务器的交互。

3. 数据处理与常见模块

  • 列表操作:理解列表切片(list[start:end])的“左闭右开”原则,用于多进程数据分片;认识到大列表(如1亿元素)创建的内存占用问题,学会用range(按需生成元素)优化。
  • 模块使用
    • requests:发送HTTP请求获取API数据(如美女图片API、体重秤接口),解析JSON响应(resp.json())。
    • jsondumps将字典转为JSON字符串(用于网络传输),loads解析JSON字符串。
    • base64b64encode/b64decode实现二进制数据与文本的转换,解决JSON无法传输二进制的问题。
    • time/datetimetime()计算程序执行时间,datetime.now()获取当前时间用于服务器数据返回。

二、典型疑问与解决方案

疑问类型 具体问题 解决方案
函数/方法参数问题 1. task_handler()缺少curr_listresult_queue参数
2. socket.bind()参数错误
1. 调用时传入所有必需参数,多进程中通过args传递元组参数
2. bind需传入(IP, 端口)格式的元组
数据结构错误 1. KeyError: 'newslist'(API返回无该字段)
2. TypeError: string indices must be integers
1. 打印API完整返回数据,确认字段名;检查APIKey有效性
2. 确认循环变量类型(如是否为字典),修正索引方式
网络连接问题 1. WinError 10049(绑定无效IP)
2. telnet/nc命令不可用
1. 绑定0.0.0.0(所有可用IP)或本机真实IP(ipconfig查看)
2. 启用Telnet客户端,或用PowerShell原生命令连接
多线程/进程逻辑问题 1. 计时不准确(漏算数据准备时间)
2. 进程间数据共享失败
1. 将start = time()移到程序最开始,统计全程耗时
2. 用multiprocessing.Queue实现进程间数据传递

三、易错点与改进方向

1. 高频易错点

  • 参数格式:忽略bind的元组参数格式、args的元组传递(如少加逗号)、函数调用时参数数量不匹配。
  • 数据类型判断:未提前打印API返回数据结构,想当然使用字段名;混淆字符串与字典的索引方式。
  • 资源释放与效率:多进程/线程未正确关闭连接(如client.close());大列表重复创建导致内存浪费,未用range优化。
  • 环境配置:忽略Windows系统默认未启用Telnet,直接使用telnet命令导致报错。

2. 后续改进方向

  • 代码健壮性:增加异常处理(如try-except捕获网络请求错误、文件读写错误),避免程序崩溃。
  • 性能优化
    • 多线程下载时设置线程池(concurrent.futures.ThreadPoolExecutor),避免创建过多线程。
    • 大文件传输时拆分数据(如分块发送),避免单次发送数据过大导致阻塞。
  • 功能扩展:基于现有TCP服务器,实现客户端向服务器上传文件、服务器对客户端身份验证等功能,深化网络编程理解。
  • 调试能力:遇到问题时先打印关键数据(如变量类型、API返回、IP/端口配置),逐步定位问题,减少盲目修改代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8.RV1126-OPENCV 视频中添加LOGO - 指南

8.RV1126-OPENCV 视频中添加LOGO - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

学习记录:响应式系统、文件通知与游戏输入机制的异同

引言 在学习前端开发和系统编程的过程中,我们常常会遇到“自动响应变化”的现象:Vue/React 中数据更新后 UI 自动刷新 删除文件后文件管理器图标立即消失 游戏中按下按键角色立刻移动这些现象看似都体现了“响应式”…

虎丘做网站价格个人网页设计作业总结

目录 写在开头1.了解情感分析的概念及其在实际应用中的重要性1.1 情感分析的核心概念1.1.1 情感极性1.1.2 词汇和上下文1.1.3 情感强度1.2 实际应用中的重要性 2. 使用情感分析库进行简单的情感分析2.1 TextBlob库的基本使用和优势2.1.1 安装TextBlob库2.1.2 文本情感分析示例2…

oppoR9m刷Linux系统: 制作 scatter.txt 和 导出手机preloader

前言全局说明COM、VCOM、9008模式备份系统与基带IMEI/NVRAM/QCN 前面两篇文章,用不同方式备份,这次用 MTK 自带的 COM、VCOM 方式备份。注意:刷机,会丢失用户:照片、聊天等信息资料。请备份基带等信息。请慎重刷机…

做百科专用参考链接的网站仿站多少钱

前段时间,业务的虚机上安装了symantec Endpoint Protection(正版), 发现虚机运行一段时间就会失去响应死机,并且有些安装symantec的虚机3389端口无法使用,怎么折腾都不行。最后决定卸载它。一、是否可以用停止服务和终止进程再卸载的方式卸载…

详细介绍:ASR技术(自动语音识别)深度解析

详细介绍:ASR技术(自动语音识别)深度解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

1.1 采样问题 Sampling and Bandits

n臂bandits(n-armed bandits) n臂bandits(multi-armed bandit)是最简单的试错式学习形式。学习与动作选择都发生在同一个状态中,在该状态下有 \(n\) 个可用动作,每个动作对应不同的奖励分布。目标是通过试错的方…

升级下载:进阶版(二级单工序)

升级下载:进阶版(二级单工序)Posted on 2025-10-07 20:09 EXLman 阅读(0) 评论(0) 收藏 举报. 当前款式:进阶版(二级单工序) . 文件名称:PXCtwobom.dll . 升级方法:下载解压后,直接替换该文件 .

绵阳 网站建设百度官网网址

最近接触一个新的传统项目,在联调过程中,查看日志特别不方便,既无trackId,即无接口耗时,所以写了该博客。话不多说,直接上代码 1、实体类user package com.yk.domain;import lombok.Data;Data public cla…

UCB-CS70_离散数学_个人笔记:至少和至多 - Zeeh

有趣的命题 在note1中,提出了两个关于“至少”和“至多”的命题:There are at least three distinct integers x that satisfy P(x). 有 最多 三个不同的整数x这满足p(x)。对于这两个命题,可以分别用下面两个式子…

太原网站制作开发域名怎么实名认证

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 找镜像: docker search nexus2. 拉取镜像:(我已经拉取过,不选择版本时,默认…

模板做的网站 怎么提升排名商标设计公司推荐

冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越…

10.7 NOIP 模拟赛 T2. 中心极限定理

思路 发现吃马不好维护, 考虑直接状态压缩马的存活情况, 可以做到 \(\mathcal{O} (n^2 2^m)\) 考虑进一步处理, 发现由于你的棋子不能回头, 吃掉一个马后, 最多走三步就跳出了马的范围, 所以我们可以直接把前两步的路线…

【题解】10.6 国庆中秋 提高组 热身赛

1.栅栏密码 题目传送门题目大意: 给定高度 h 和一行使用栅栏密码加密的密文字符串 s,请你输出一行明文字符串 plain。 即把明文排列成若干个 \/\/\/ 的形状,然后再逐行按从左到右的顺序取出字符,形成密文。STEP 1.…

深圳手机网站建设牛商网购物网站的排版

简介: 先说下什么是人脸识别系统:举个例子,公司门口有个人脸识别系统,员工站到门口,看着摄像头,大屏幕上会抓拍到你的人脸,然后和公司的员工照片库里的照片比对,比对成功就提示&…

深入解析:pikachu通关教程-File Inclusion

深入解析:pikachu通关教程-File Inclusion2025-10-07 20:03 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: blo…

UCB-CS70个人笔记:至少和至多 - Zeeh

有趣的命题 在note1中,提出了两个关于“至少”和“至多”的命题:There are at least three distinct integers x that satisfy P(x). 有 最多 三个不同的整数x这满足p(x)。对于这两个命题,可以分别用下面两个式子…

几个重要的偏微分方程

几个重要的偏微分方程1. 弦振动方程

虚拟机器人学习自然语言指令技术解析

介绍两项创新性研究,通过视觉与语言理解技术提升虚拟环境中机器人任务完成能力。包含DialFRED对话增强框架和感知可用性神经SLAM模型,在模拟环境中实现超过20%的性能提升。虚拟机器人学习自然语言指令技术解析 研究背…

vr技术在网站建设的应用南京浦口网站建设

🤖 与ChatGPT亲密接触 🤖 ChatGPT!它就是一款强大的聊天型人工智能模型,可以与你进行各种有趣的对话,就像我们在这里一样。不论你想聊天、提问、寻求建议,还是只是想找个伙伴一起闲聊,ChatGPT都…