我是靠谱客的博主 狂野香氛,最近开发中收集的这篇文章主要介绍python多进程cpu的占用率很低_python数据结构和GIL及多进程!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一 数据结构和GIL

1 queue

标准库queue模块,提供FIFO的queue、LIFO的队列,优先队列

Queue 类是线程安全的,适用于多线程间安全的交换数据,内部使用了Lock和Condition

为什么说容器的大小不准确,其原因是如果不加锁,是不可能获取到准确的大小的,因为你刚读取了一个大小,还没取走,有可能被就被其他线程修改了,queue类的size虽然加了锁,但是依然不能保证立即get,put就能成功,因为读取大小和get,put方法是分来的。

Python资源共享群:626017123

2 GIL

1 简介

全局解释器锁,进程级别的锁GIL
Cpython在解释器进程中有一把锁,叫做GIL全局解释器锁。
GIL 保证Cpython进程中,当前时刻只有一个线程执行代码,甚至在多核情况下,也是如此。

2 IO 密集型和CPU密集型

Cpython中

IO 密集型,由于线程阻塞,就会调度其他线程

CPU密集型,当前线程可能连续获取GIL,导致其他线程几乎无法使用CPU,若要唤醒其他线程,则需要准备数据,其代价是高昂的。

IO 密集型,多线程解决,CPU密集型,多进程解决,绕开GIL。
python中绝大多数内置数据结构的读写操作都是原子操作

由于

最后

以上就是狂野香氛为你收集整理的python多进程cpu的占用率很低_python数据结构和GIL及多进程!的全部内容,希望文章能够帮你解决python多进程cpu的占用率很低_python数据结构和GIL及多进程!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(28)

评论列表共有 0 条评论

立即
投稿
返回
顶部