进程,是系统进行资源分配最小单位(拥有独立的内存单元)。(python中多进程是真的)
线程,是操作系统最小的执行单位(共享内存资源),比进程还小。(python中多线程是假的,因为cpython解释器中的一个模块GIL(全局解释器锁),GIl功能和互斥锁相似。)

证明过程:
(一)多进程
import multiprocessing
import os
import timedef add2():start_time = time.time()for i in range(100000000):passend_time = time.time()use_time = end_time - start_timeprint("进程id: %s use_time: %s" % (os.getpid(), use_time))if __name__ == '__main__':print("【进程测试】")p1 = multiprocessing.Process(target=add2, args=(), name="p1-进程")print("p1.name :%s" % p1.name)p2 = multiprocessing.Process(target=add2, args=(), name="p2-进程")start_time = time.time()p1.start()p2.start()p1.join()p2.join()end_time = time.time()use_time = end_time - start_timeprint("主进程id:%s use_time: %s" % (os.getpid(),use_time))print("====主进程单独运行一次循环耗时:=====")add2()

  

多进程运行结果:
 
(二)多线程
import threading
import timedef add2():start_time = time.time()for i in range(100000000):passend_time = time.time()use_time = end_time - start_timeprint("线程id:%s 耗时:%s" % (threading.current_thread().ident, use_time))if __name__ == '__main__':print("【线程测试】")print("主线程:%s 主线程id:%s" % (threading.current_thread(), threading.current_thread().ident))t1 = threading.Thread(target=add2, args=(), name="t1-线程")t2 = threading.Thread(target=add2, args=(), name="t2-线程")start_time = time.time()t1.start()t2.start()t1.join()t2.join()end_time = time.time()use_time = end_time - start_timeprint("线程id:%s 耗时:%s  (主线程)" % (threading.current_thread().ident, use_time))print("====主线程单独运行一次循环耗时:=====")add2()

  

多进程运行结果:
(三)结论:
不论是线程还是进程,循环单独运行的时间都是差不多的4秒内。
而多线程的总耗时基本上是单独循环一次耗时的2倍左右,所以多线程是假的,是串行的。

转载于:https://www.cnblogs.com/andy9468/p/9615090.html

对比python的进程和线程:多线程是假的相关推荐

  1. python之进程和线程的对比

    python之进程和线程的对比 1. 进程和线程的对比的三个方向 关系对比 区别对比 优缺点对比 2. 关系对比 线程是依附在进程里面的,没有进程就没有线程. 一个进程默认提供一条线程,进程可以创建多 ...

  2. Python【进程和线程】保姆式教学,1个台机子多只手干活的秘籍

    进程线程有多重要?刚开始学Python的时候你可能还没有感觉到,因为你写的代码从上到下执行一遍就可以了,但实际上这很初级,实际开发写项目的时候,为了充分利用电脑配置来加快程序进度,我们往往会用到多进程 ...

  3. Python创建进程、线程的两种方式

    代码创建进程和线程的两种方式 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. ...

  4. python提高——进程、线程、协程对比及代码实现

    目录 1多任务 1.1并发 1.2并行 2线程 2.1引入线程 2.2线程进行顺序 2.3线程封装 2.4多线程-共享全局变量 2.5资源竞争 2.6互斥锁 2.7死锁 3进程 3.1进程创建 3.2 ...

  5. Python高级系列教程:Python的进程和线程

    学习目标 1.了解多任务的概念 2.了解进程的概念以及多进程的作用 3.掌握多进程完成多任务的工作原理及案例编写 4.掌握进程编号的获取方式以及进程使用的注意事项 5.了解线程的概念以及多线程的作用 ...

  6. python之进程和线程2

    1  GIL全局解释器锁定义 定义:在一个线程拥有了解释器的访问权后,其他的所有线程都必须等待他释放解释器的访问权,即这些线程的下一条指令并不会互相影响. 缺点:多处理器退化为单处理器 优点:避免大量 ...

  7. 《Python》进程收尾线程初识

    一.数据共享 from multiprocessing import Manager 把所有实现了数据共享的比较便捷的类都重新又封装了一遍,并且在原有的multiprocessing基础上增加了新的机 ...

  8. python的进程和线程_Python进程与线程知识

    Python进程与线程知识,Python开发语言现在已经是被大家非常看中的编程语言了,本篇文章给读者们分享一下Python进程与线程知识小结,本篇文章具有一定的参考借鉴价值,感兴趣的小伙伴来了解一下吧 ...

  9. python之进程与线程

    什么是操作系统       可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统.还有没有其他的? 想想我们使用的手机,Google公司的Androi ...

  10. 二十二、 深入Python的进程和线程(上篇)

    @Author: Runsen 进程(Process)和线程(Thread)都是操作系统中的基本概念,它们之间有一些优劣和差异,那么在Python中如何使用进程和线程? 文章目录 CPU 进程 线程 ...

最新文章

  1. 考研计算机专业课怎么复习,2016考研计算机专业课如何复习?
  2. [Bzoj4408]神秘数(主席树)
  3. Tomcat 7 自动加载类及检测文件变动原理
  4. 北京内推 | 微软亚洲互联网工程院招聘NLP方向研究实习生(可远程)
  5. MySQL高级 - 锁 - InnoDB行锁 - 争用情况查看
  6. 【Tensorflow】解决No module named ‘matplotlib‘/‘pandas‘
  7. 如何才能真正的提高自己,真正成为一名出色的架构师?
  8. 关于函数指针调用C++非静态成员
  9. mysql 5.6 json查询_mysql5.6及以下版本如何查询数据库里的json
  10. 计算机控制面板程序可以设置鼠标,外设门诊:游戏中如何使用鼠标宏提升操作...
  11. 时间序列(二):时间序列平稳性检测
  12. 51单片机简易MP3程序驱动蜂鸣器播放
  13. mkv文件用什么软件打开_什么是MKV文件,以及如何播放它们?
  14. linux学习资料(转帖收藏)
  15. oracle监听启动失败12560,Oracle监听器无法启动(TNS-12555,TNS-12560,TNS-00525)
  16. Redis的ZSET的实现及结合源码的跳跃表结构分析
  17. Pandas-时间(二)-数据类型:DatetimeIndex(其中每个元素的类型为:Timestamp)【创建方式:①pd.DatetimeIndex([]);②pd.to_datetime()】
  18. 任正非圣诞发表文章:我在生活所迫时创立华为
  19. VBA 为什么你redim() 动态二维数组总出错?因为 redim 动态数组不太适合和循环搭配
  20. 职高学生计算机学情分析,高职学生学情分析

热门文章

  1. 那些远去的人,那段伟大的历史【ZZ】
  2. 聊聊 print 的前世今生
  3. k8s控制平面 scheduler部署
  4. JVM GC调优一则--增大Eden Space提高性能
  5. mysql 查询的关键词的执行顺序
  6. 创建ipadWEB应用程序到主屏幕
  7. hdu 2553(N皇后)
  8. 浪潮gs开发平台学习---平台快速开发入门
  9. VSTS有Bug,分析数据库的维度和维度属性使用中文命名时候,作为报表参数会出错。虽然有解决办法但是头大。...
  10. mongodb 高可用分布式原理 ---------搭建高可用mongo集群前需要温习的知识-火