当前位置: 首页 > news >正文

Python Socket网络编程(2)

进程:提供计算资源的单位
线程:真正工作的单位(cpu调度最小单元)

GIL锁:全局解释器锁(是CPython解释器特有的,平时说的Python解释器一般都是CPython解释器,还有GPython等等)
让一个进程中同一时刻只能有一个线程可以被CPU调动。
image

所以Python中应该是没有严格意义的多线程的,普通的IO密集型操作也用不上多进程,比如爬虫等
所以在计算密集型才需要考虑使用多进程来进行并发运算

join等待子线程执行结束

setDaemon必须放在start之前)True设置守护线程,主线程结束,子线程自动关闭,False设置非守护线程,主线程等子线程执行完毕之后,主线程才结束

setName给线程取名字 thread.current_thread().getName()获取当前线程名称,给线程设置名字必须要在开始之前

自定义类,继承thread.Thread,然后添加def run(self)就可以添加干的事

threading.RLock()申请锁,释放锁,不同线程必须要用同一锁才有意义,因为一个申请释放完之后另一个才能申请释放,所以用同一把锁才能有效的让线程有序执行和排队
image
两种上锁和释放锁的方式,with更加简洁,像是文件的打开关闭
有些操作默认是线程安全的,内部形成了锁的机制,我们在使用的时候无需通过锁再处理,比如list.append(),以下这些都是线程安全的
image

Lock()和RLock()基本相同,但是Lock()不能进行锁的嵌套,锁一次解一次是没问题的,而且这种情况下,Lock比RLock的效率要高
image
比较适合的情景,不用担心协同开发导致的锁问题
image

CPU分片计算,线程的切换会导致大量线程时速度的下降

线程池ThreadPoolExecutor()
pool.shutdown()有点像Thread.join()

闭包操作真有意思,就不用改函数输入了
image

http://www.rkmt.cn/news/5606.html

相关文章:

  • DRAN读写循环
  • Neisbitt 不等式的证法
  • C语言中递归思想的应用
  • Markdown学习Day01
  • 25.9.15
  • 配置Maven
  • 那两年的回忆录
  • 二十五、多处理器的基本概念 (SISD/SIMD/MIMD)
  • docker部署Gitlab社区版,步骤以及外网访问出现502的解决方式 - 实践
  • 中南上课第一天
  • 20250915 - 状压dp 总结
  • 学校真是太棒了
  • 来解剖 来平息你的颤抖 叫嚷着还不足够 还需要更多疼痛 才值得温柔
  • 考研复习-操作系统-第三章-内存管理 - 详解
  • python_Day18_linux(1)
  • 支持国产cpu架构的nacos-2.4.3
  • GAS中,负责封装技能所影响的目标数据(如 Actor、位置、碰撞结果等)-FGameplayAbilityTargetData
  • 滑动窗口最大值-leetcode
  • AbilitySystemComponent和AbilityTask
  • 【QT】信号和槽
  • snmp协议
  • 刷题复习(四)二分搜索
  • 练习第一天学习的内容
  • 常见小错误 FREQUENTLY MADE MISTAKES IN OI
  • 详细介绍:Linux相关概念和易错知识点(44)(IP地址、子网和公网、NAPT、代理)
  • 力扣39题 组合总和
  • 力扣34题 在排序数组中查找元素的第一个和最后一个位置
  • ECT-OS-JiuHuaShan框架编程的示范与分析,无懈可击的数学逻辑自洽
  • 使用 systemd 管理 Python 项目(示例:confhub-sync)
  • 9.15模拟赛总结