python单核运行_python下多核,单核CPU对于并行,并发执行效率的对比-Go语言中文社区...

这篇博客探讨了Python中多线程和多进程在多核及单核CPU上的效率。尽管多线程在Python中受到GIL的限制,但在IO密集型任务中仍能利用空闲时间切换线程,而在CPU密集型任务中,多进程由于拥有独立的GIL,表现更优。实验结果显示,多核环境下,多进程执行CPU密集型任务的速度快于多线程。
摘要由CSDN通过智能技术生成

**

**

这篇博客主要内容为python 中多线程以及多进程的效率对比,以及记录自己在做这个实验中遇到的一些问题以及心得

背景引入:

CPU制造商为了追求CPU效率放弃了在CPU频率上的追求(CPU频率即CPU单位时间内可以完成任务的多少),反而开始把方向转向了多核CPU上。那么如何在多核CPU上充分发挥出多核的优势就成了一个问题。

首先是简单介绍下多线程与多进程:

线程:

是程序执行流的最小单元,是系统独立调度和分配CPU(独立运行)的基本单位。线程(有时被称为轻量级进程)跟进程有些相似,不同的是,所有的线程运行在同一个进程中, 共享相同的运行环境。它们可以想像成是在主进程或“主线程”中并行运行的“迷你进程”。

进程:

是资源分配的基本单位。一个进程包括多个线程。进程(有时被称为重量级进程)是程序的一次 执行。每个进程都有自己的地址空间,内存,数据栈以及其它记录其运行轨迹的辅助数据。操作系 统管理在其上运行的所有进程,并为这些进程公平地分配时间。进程也可以通过 fork 和 spawn 操作 来完成其它的任务。不过各个进程有自己的内存空间,数据栈等,所以只能使用进程间通讯(IPC), 而不能直接共享信息。

说简单点进程就好比QQ,浏览器这些应用程序,而线程就像QQ里和不同的人的聊天窗口或者浏览器中播放的音乐,显示的网页。

区别:

1.线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。

2.每个进程都有自己一套独立的资源(数据),供其内的所有线程共享。

3.不论是大小,开销线程要更“轻量级”

4.一个进程内的线程通信比进程之间的通信更快速,有效。(因为共享变量)

测试机:

物理机

虚拟机操作系统

macOS

Ubuntu16.04

CPU

双核

单核

内存

8G

2G

python在管理多线程使用了GIL

pythonGIL解释:

GIL是实现python解释器时引入的一个概念,像C语言一样,python 的解释器也有很多,常见的有CPython,Psyco,PyPy。 而GIL是实现CPyhon时引入的。

In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (Howev

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值