多进程VS多线程
功能:
  进程:能够完成多任务,比如,同时运行多个QQ
  线程:能够完成多任务,比如一个QQ中的多个聊天窗口
定义
  进程:系统进行资源分配和测试的一个独立单位,线程自己基本上不拥有系统资源,但是他可以与同属于一个进程的其他线程共享所拥有的全部资源
  线程:进程的一个实体,是CPU调用和分派的基本单位,他是比进程更小的能独立运行的基本单位
    
区别:
  一个程序至少拥有一个进程,一个进程至少拥有一个线程
  线程划分的尺度小于进程(资源比进程少),使得多线程程序并发性更高
  进程在执行过中拥有独立的内存单元,而多个线程共享这段内存空间
  线程不能独立运行,必须依存进程
优缺点:
  线程的执行开销小,但不利于资源的管理和保存
  进程正好相反
资源共享
  进程:
    想实现进程间的资源共享,需要使用Manager().Queue()来实现
    多进程中,每个进程中所有数据(包括全局变量)都各自拥有一份,互不影响
  线程:
    在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程之间的数据共享
    缺点:线程是对全局变量的随意更改可能造成多线程之间对全局变量引用比较混乱(线程安全成了问题)
进程 线程 协程定义
  进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。
  线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。
  协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。

Python-多进程VS多线程的更多相关文章

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

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

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

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

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

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

  4. python多进程和多线程

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

  5. Python多进程vs多线程

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

  6. python 多进程和多线程的区别

    了解线程和进程 进程 程序:磁盘上的可执行二进制文件,并无运行状态. 进程:就是一个正在运行的任务实例(存活在内存里). 获取当前电脑的CPU核心数: pip install psutil >& ...

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

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

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

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

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

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

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

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

随机推荐

  1. devmapper: Thin Pool has 162394 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

    问题: 制作镜像的时候报错 devmapper: Thin Pool has 162394 free data blocks which is less than minimum required 1 ...

  2. War3编辑器

    [War3编辑器] 1.英雄在商店买东西叫“任意单位 出售物品”,英雄卖东西给商店叫“抵押物品”. 2.触发器中的一级窗口包含: 1)设置事件窗口. 2)设置条件窗口. 3)设置动作窗口. 3.二级设 ...

  3. centos6.8下配置https服务器

    centos6.8下配置https服务器 1.1 环境 l  系统环境:内核环境为2.6.32版本  64位的CentOS release 6.8 (Final) [root@localhost ~] ...

  4. Appium1.6 GUI界面介绍

    Appium1.6安装详见随笔:http://www.cnblogs.com/meitian/p/7360017.html   下面具体介绍一下GUI界面 1.appium server配置页面 2. ...

  5. 【C++】Mandelbrot集绘制(生成ppm文件)

    曼德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形.曾被称为"上帝的指纹". 这个点集均出自公式:Zn+1=(Zn)^2+C.(此处Z.C均为复数)所有使得该公式无限迭代后的 ...

  6. python内置函数getattr用法

    class Tests(object):    #定义类     aaa = '10'          #定义变量       def test(self):     #定义类的方法test     ...

  7. perl-基础

    1.关系运算符 数字: == != < <= > >= 字符串: eq ne lt le  gt   ge 2.循环 循环:while(){}   for(){}   last ...

  8. e-olymp Problem9 N-digit numbers(打表)

    传送门:点我 N-digit numbers Find the quantity of N-digit numbers, which the sum is equal to their product ...

  9. oracle数据库新建库

    1.https://jingyan.baidu.com/article/76a7e409f3f37bfc3b6e15de.html 利用工具新建库. 2.创建时报错 out of memory 调节s ...

  10. leetcode输入输出加速

    C++兼容C的输入输出,即cin与scanf混用文件指针不会出错,cout亦同,导致cin有额外开销. 可以用std::ios::sync_with_stdio(false);手动关闭. cin.ti ...