python 多进程和多线程的区别
了解线程和进程
进程
程序:磁盘上的可执行二进制文件,并无运行状态。
进程:就是一个正在运行的任务实例(存活在内存里)。
获取当前电脑的CPU核心数:
pip install psutil
>>> import psutil
>>> psutil.cpu_count()
4我的电脑CPU只有一个核心:我同时可以工作几个任务
核心数对应的是计算机同时可以执行的最大任务数
CPU切换执行每一个任务,100个任务;中断的执行(切换)速度非常快,人的肉眼是捕捉不到的。
并发:同一时刻可以有多个函数或者多个任务在我的程序里执行;效率更高。
apache/nginx:Web服务器,并发服务器。
单进程:我的程序,就是从上到下,这样执行;效率其实不高
CPU高 75 - 80
检查进程
TCP连接数,Web服务(FTP,webSocket、SQL链接),TCP链接
没有正经的完成三次握手
文件占用太多:打开的文件个数太多,文件处于IO等待状态,磁盘不行了;
CPU在处于等待文件读取,1K,CPU在等待IO的过程其实也是真正的工作
一个人在上班的时候,手头没活。
虚拟内存开小了 SWAP 交换分区
逻辑内存:4G
魔兽世界:50G
磁盘额外设置一块空间,暂时保存内存中不处理的数据
8G :20G 2倍
固态:SSD 1T 2-3万左右
线程:轻量级的进程
一个任务会由多个进程同时配合执行。
多进程:
主要的程序会根据自己程序内部的功能去细节去分化新的进程来完成。
任务分化成多个主进程来执行,这就是多进程第一种。
默认的进程之间数据彼此独立,不管是父子进程还是多主进程。
进程之间彼此切换,效率会降低。
多线程:子线程
必须要有一个主进程来创建。
线程共享主进程内所有的数据。
多线程处理数据,会造成数据混淆。
GIL锁:Python强制要求线程彼此执行的时候需要维持数据。
线程不需要CPU拿取和释放资源;
多线程是一个轻量级的进程,在操作系统下不会单独的来执行一个线程来作为任务
线程必须要基于一个主进程来创建的
Linux下面:经常用的架构,就是多进程。
多线程只是一个功能(小数据量的)可能会采用的。
Linux:ps命令
ps命令的返回值
python 多进程和多线程的区别的更多相关文章
- Python多进程和多线程是鸡肋嘛?【转】
GIL是什么 Python的代码执行由 Python虚拟机(也叫解释器主循环,CPython版本)来控制,Python在设计之初就考虑到在解释器的主循环中,同时只有一个线程在运行.即每个CPU在任意时 ...
- python多进程与多线程编程
进程(process)和线程(thread)是非常抽象的概念.多线程与多进程编程对于代码的并发执行,提升代码运行效率和缩短运行时间至关重要.下面介绍一下python的multiprocess和thre ...
- Python多进程与多线程编程及GIL详解
介绍如何使用python的multiprocess和threading模块进行多线程和多进程编程. Python的多进程编程与multiprocess模块 python的多进程编程主要依靠multip ...
- python多进程和多线程
多任务才有多进程和线程: 线程是最小的执行单元,而进程由至少一个线程组成.如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间. 多进程和多线程的程序涉及到同步.数据共享 ...
- Python多进程vs多线程
多任务的两种方式:多进程和多线程. 如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker. 如果用多线程实现Master-Worker,主线程就是Master, ...
- 【转】【Python】Python多进程与多线程
1.1 multiprocessing multiprocessing是多进程模块,多进程提供了任务并发性,能充分利用多核处理器.避免了GIL(全局解释锁)对资源的影响. 有以下常用类: 类 描述 P ...
- Python 多进程、多线程效率比较
Python 界有条不成文的准则: 计算密集型任务适合多进程,IO 密集型任务适合多线程.本篇来作个比较. 通常来说多线程相对于多进程有优势,因为创建一个进程开销比较大,然而因为在 python 中有 ...
- python 多进程,多线程,协程
在我们实际编码中,会遇到一些并行的任务,因为单个任务无法最大限度的使用计算机资源.使用并行任务,可以提高代码效率,最大限度的发挥计算机的性能.python实现并行任务可以有多进程,多线程,协程等方式. ...
- Python多进程、多线程和协程简介
一.进程和线程 进程是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.在单核CPU系统中的多进程,内存中可以有许多程序,但在给定一个时刻只有一个程序在运行: ...
随机推荐
- dig命令详解
dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常 语法 dig(选项)(参数) 选项 @<服务器地址>:指定进行域名解析的域名服务器: -b<ip地址>:当主机 ...
- redis cluster集群管理工具redis-trib.rb命令小结-运维笔记
redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单.便捷.实用的操作工具.redis-trib.rb ...
- 因为错误关闭Selinux导致CentOS7启动失败(进度条卡死,图形界面加载卡死)
我在CentOS7上安装oracle,非常麻烦,搞半天终于安装完毕,当天我没有发现任何问题,第二天上班打开虚拟机CentOS7就进不去了. 我想起来之前关闭了Selinux,把系统名称改成了redha ...
- SpringMVC源码阅读:属性编辑器、数据绑定
1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ...
- Git 使用SSH密钥操作
git使用ssh密钥 git支持https和git两种传输协议,github分享链接时会有两种协议可选: git协议链接图例 : ↓ https协议链接图例:↓ git使用https协议,每次pull ...
- Webhook是什么、怎么理解
Webhook是什么 我们想看看维基老大的解说: A webhook in web development is a method of augmenting or altering the beha ...
- 用ASP.NET实现下载远程图片保存到本地的方法 保存抓取远程图片的方法
以下介绍两种方法:1.利用WebRequest,WebResponse 类WebRequest wreq=WebRequest.Create("http://files.jb51.net/f ...
- SpringMVC拦截器和@ResponseBody注解冲突
在使用@ResponseBody注解后controller方法只会返回ModelandView对象的数据模型,不会返回视图,这样有很多好处,但是如果在拦截器中进行了页面转发,在满足页面转发条件时,不会 ...
- Java GC机制详解
垃圾收集 Garbage Collection 通常被称为“GC”,本文详细讲述Java垃圾回收机制. 导读: 1.什么是GC 2.GC常用算法 3.垃圾收集器 4.finalize()方法详解 5. ...
- JAVA设计模式详解(二)----------观察者模式
有一个模式可以帮助你的对象知悉现况,不会错过该对象感兴趣的事,对象甚至在运行时可以决定是否要继续被通知,如果一个对象状态的改变需要通知很多对这个对象关注的一系列对象,就可以使用观察者模式 .观察者模式 ...