了解线程和进程

进程

  • 程序:磁盘上的可执行二进制文件,并无运行状态。

  • 进程:就是一个正在运行的任务实例(存活在内存里)。

  • 获取当前电脑的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 多进程和多线程的区别的更多相关文章

  1. Python多进程和多线程是鸡肋嘛?【转】

    GIL是什么 Python的代码执行由 Python虚拟机(也叫解释器主循环,CPython版本)来控制,Python在设计之初就考虑到在解释器的主循环中,同时只有一个线程在运行.即每个CPU在任意时 ...

  2. python多进程与多线程编程

    进程(process)和线程(thread)是非常抽象的概念.多线程与多进程编程对于代码的并发执行,提升代码运行效率和缩短运行时间至关重要.下面介绍一下python的multiprocess和thre ...

  3. Python多进程与多线程编程及GIL详解

    介绍如何使用python的multiprocess和threading模块进行多线程和多进程编程. Python的多进程编程与multiprocess模块 python的多进程编程主要依靠multip ...

  4. python多进程和多线程

    多任务才有多进程和线程: 线程是最小的执行单元,而进程由至少一个线程组成.如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间. 多进程和多线程的程序涉及到同步.数据共享 ...

  5. Python多进程vs多线程

    多任务的两种方式:多进程和多线程. 如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker. 如果用多线程实现Master-Worker,主线程就是Master, ...

  6. 【转】【Python】Python多进程与多线程

    1.1 multiprocessing multiprocessing是多进程模块,多进程提供了任务并发性,能充分利用多核处理器.避免了GIL(全局解释锁)对资源的影响. 有以下常用类: 类 描述 P ...

  7. Python 多进程、多线程效率比较

    Python 界有条不成文的准则: 计算密集型任务适合多进程,IO 密集型任务适合多线程.本篇来作个比较. 通常来说多线程相对于多进程有优势,因为创建一个进程开销比较大,然而因为在 python 中有 ...

  8. python 多进程,多线程,协程

    在我们实际编码中,会遇到一些并行的任务,因为单个任务无法最大限度的使用计算机资源.使用并行任务,可以提高代码效率,最大限度的发挥计算机的性能.python实现并行任务可以有多进程,多线程,协程等方式. ...

  9. Python多进程、多线程和协程简介

    一.进程和线程 进程是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其他用于跟踪执行的辅助数据.在单核CPU系统中的多进程,内存中可以有许多程序,但在给定一个时刻只有一个程序在运行: ...

随机推荐

  1. Servlet 监听器Listener详解

    转自:http://blog.csdn.net/u012228718/article/details/41730799 一.简介 (一)概述 1.Listener 用于监听 Javaweb程序中的事件 ...

  2. java sendmail

    http://blog.csdn.net/Guerlei/article/details/53189522

  3. 微信开发(一)基于Wx-java的微信分享功能

    最近在做微信服务号开发,简单总结一下,便于自己学习积累和分享给大家: 环境介绍: Spring+ Spring MVC +Mybatis 开发语言: JAVA 微信公众平台的开发中,微信只公布了一个基 ...

  4. spring@value取不到值的几种情况

    一,spring组件重写构造方法,在构造方法中引用@value为null 由于spring实例化顺序为先执行构造方法,再注入成员变量,所以序为先执行构造方法,再注入成员变量,所以ing实例化顺取值为n ...

  5. [转]分布式中Redis实现Session终结篇

    本文转自:http://www.cnblogs.com/yanweidie/p/4763556.html 上一篇使用Redis实现Session共享方式虽然可行,但是实际操作起来却很麻烦,现有代码已经 ...

  6. 点击CheckBox让Gridview控件在编辑与正常状态之间切换

    昨晚快休息时,还有一位网友咨询Insus.NET,他想在开发时,实现一个小功能,就是想让用户在点击Gridview控件第一列的CheckBox之后,GridView进入编辑状态,取消选中的CheckB ...

  7. winform窗体 小程序【三级联动】

    三级联动[省,市,区] 类似地区选择,当选的某个省份,后面的下拉框相对变成对应省份的区县 实现省市区联动关键是数据库的表,[每个省内区的AreaCode列是同样的] public Form2() { ...

  8. Linux-mkdosfs格式化磁盘命令(15)

    名称:mkdosfs 使用:mkdosfs [块设备名称] 说明: 将一个块设备格式化为DOS磁盘类型 例: mkdosfs /dev/memblock //将memblock块设备格式化为dos磁盘 ...

  9. 转载 - java中接口的向上转型。和多态性

    发现一篇对接口总结很精简的文章 1.在java中接口就是一个完全抽象的类,跟抽象类一样不能产生对象,但是可以作为对象的引用,可以由其实现类向上转型,它就跟超类一样, 向上转型了,可以很好的利用接口,可 ...

  10. hadoop学习之hdfs文件系统

    一.hdfs的概念 Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS. Hadoop是Apache Lucene创始人Doug Cu ...