Python 基础知识点理解(三)之Python多进程和多线程的区别和联系
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python 基础知识点理解(三)之Python多进程和多线程的区别和联系,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1805字,纯文字阅读大概需要3分钟。
内容图文
![Python 基础知识点理解(三)之Python多进程和多线程的区别和联系](/upload/InfoBanner/zyjiaocheng/981/16500fe51a3547d58984d56573e81bfa.jpg)
先说一下什么是进程,线程
进程:进程时计算机程序一次执行的实例,由 程序段 数据段 PCB组成,是计算机资源分配和调度的基本单位,也是线程的容器
线程:线程也叫作轻量级进程,是程序执行的最小单位,他本身只拥有少部分执行必须的资源。
进程和线程的VS(创建,通信,稳定性):
(1)线程共享内存空间;进程的内存是独立的
(2)同一个进程的线程之间可以直接交流;两个进程想通信,必须通过一个中间代理来实现
(3)创建新线程很简单; 创建新进程需要对其父进程进行一次克隆
(4)一个线程可以控制和操作同一进程里的其他线程;但是进程只能操作子进程
(5)改变主线程(如优先权),可能会影响其它线程;多进程的稳定性好,改变父进程,不影响子进程
多进程和多线程:
因为GIL的问题导致系统中同一时间点只能有一个线程被解释器解释,这就导致了线程无法实现并行,无法充分的利用我们计算机的多核资源,python所谓的多线程编程就类似于单核CPU情况下的多进程编程。
相比之下多进程下每个进程执行的时候都会创建一个解释器,所以就能够比较好的计算机的多和资源实现并行。
那么,我们改如何解决GIL锁的问题呢?
1.更换cpython为jpython(不建议)
2.使用多进程完成多线程的任务
3.在使用多线程可以使用c语言去实现
问题1: 什么时候会释放Gil锁,
1 遇到像 i/o操作这种 会有时间空闲情况 造成cpu闲置的情况会释放Gil
2 会有一个专门ticks进行计数 一旦ticks数值达到100 这个时候释放Gil锁 线程之间开始竞争Gil锁(说明:
ticks这个数值可以进行设置来延长或者缩减获得Gil锁的线程使用cpu的时间)
问题2: 互斥锁和Gil锁的关系
Gil锁 : 保证同一时刻只有一个线程能使用到cpu
互斥锁 : 多线程时,保证修改共享数据时有序的修改,不会产生数据修改混乱
https://www.cnblogs.com/shunge/p/8120047.html
https://blog.csdn.net/IAlexanderI/article/details/70168318
http://python.jobbole.com/85231/
协程
协程又叫微线程,简单点说协程是进程和线程的升级版,进程和线程都面临着内核态和用户态的切换问题而耗费许多切换时间,而协程就是用户自己控制切换的时机,不再需要陷入系统的内核态.
Python里最常见的yield就是协程的思想!
内容总结
以上是互联网集市为您收集整理的Python 基础知识点理解(三)之Python多进程和多线程的区别和联系全部内容,希望文章能够帮你解决Python 基础知识点理解(三)之Python多进程和多线程的区别和联系所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。