Python 线程和进程
一、什么是线程
1、线程是操作系统能够进行运算调度的最小单位。它被包含在进程中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。每个进程至少包含一个线程.
二、什么是进程
1、一个进程就是一个程序的实例,每个进程里面都包含了执行这个程序的资源。
2、虚拟内存地址,执行的代码,打开的句柄,连接操作系统的接口,用户id,独立的进程号,环境变量,优先级,最大最小的空间大小,和至少一个线程,每一个进程默认启动时候是有一个主线程的,主线程又可以创建新的线程。
三、进程与线程的区别
1、线程共享内存数据。
2、线程可以访问进程中所有的数据。
3、可以直接和其它线程进行通讯,但是两个进程之间通信必须通过第三方。
4、进程有自己独立的内存空间
5、一个进程可以产生一个子进程但是和子进程之间也无法直接进行数据访问。
6、父进程要产生子进程需要将自己克隆一份。
7、同一个进程中的其它线程是可以互相交互的,而一个进程对其子进程只能由控制作用。
8、对主线程的修改有可能会影响其它的线程
四、python GIL
1、无论你启多少个线程,你有多少个cpu,Python在执行的时候会淡定的在同时只允许一个线程运行(因为加了gil锁)。
2、首先需要明确一点是gil并不是python的特性,它是在实现Python解释器(CPython)时所引入的一个概念,就好比C++是一套语言标准,但是可以用不同的编译器来编译成可执行代码。有名的解释器例如GCC,INTEL C++,Visual C++等,Python也一样,同样一段代码可以通过CPython,PyPy,Psyco等不同的Python执行环境来执行。像其中的JPython就没有GIL。然而因为CPython是大部分环境下默认的Python执行环境。所以在很多人的概念里CPython就是Python,也就想当然的把GIL归结为Python语言的缺陷。所以这里有一个概念:GIL并不是Python的特性,Python完全可以不依赖于GIL.
Python 线程和进程的更多相关文章
- Python 线程(threading) 进程(multiprocessing)
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- Python 线程和进程和协程总结
Python 线程和进程和协程总结 线程和进程和协程 进程 进程是程序执行时的一个实例,是担当分配系统资源(CPU时间.内存等)的基本单位: 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其 ...
- Python线程,进程,携程,I/O同步,异步
只有本人能看懂的-Python线程,进程,携程,I/O同步,异步 举个栗子: 我想get三个url,先用普通的for循环 import requests from multiprocessing im ...
- Python 线程、进程和协程
python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点,在threading 得到了弥补,为了不浪费时间,所以我们直接学习threading 就可以了. ...
- python 线程与进程
线程和进程简介 应用程序和进程以及线程的关系? 一个应用程序里可以有多个进程,一个进程里可以有多个线程 最原始的计算机是如何运行的? CPU是什么?为什么要使用多个CPU? 为什么要使用多线程? 为什 ...
- python基础-第九篇-9.1初了解Python线程、进程、协程
了解相关概念之前,我们先来看一张图 进程: 优点:同时利用多个cpu,能够同时进行多个操作 缺点:耗费资源(重新开辟内存空间) 线程: 优点:共享内存,IO操作时候,创造并发操作 缺点:抢占资源 通过 ...
- python线程、进程和协程
链接:http://www.jb51.net/article/88825.htm 引言 解释器环境:python3.5.1 我们都知道python网络编程的两大必学模块socket和socketser ...
- python 线程、进程与协程
一.什么是线程?什么是进程? 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region).数据区域(data region)和堆栈(stack regio ...
- python 线程,进程与协程
引言 线程 创建普通多线程 线程锁 互斥锁 信号量 事件 条件锁 定时器 全局解释器锁 队列 Queue:先进先出队列 LifoQueue:后进先出队列 PriorityQueue:优先级队列 deq ...
- Python 线程,进程
Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元 线程不能实现多并发 只能实现伪并发 每次工作 只能是一个线程完成 由于python解释器 原生是c 原生线程 底层都会有一把 ...
随机推荐
- python 初识函数
1.什么是函数 函数就是对一个代码块 或者功能的封装,什么时候用,什么时候执行 语法: def 函数名(): 函数体(代码块) 函数的调用 函数名() #所有 ...
- Confluence 6 属性的一个示例
下面是有关 Confluence 页面被调用的前几行的访问概述. [344ms] - /display/ds/Confluence+Overview [313ms] - SiteMesh: parse ...
- ios消息机制
ios消息机制介绍 ios 调用每一个方法的时候其实是走的ios的消息机制 举例介绍一下 创建一个Pserson类 有一个eat 对象方法 那么下面的代码可以用消息机制实现 导入消息头文件 # ...
- vue.js----之router详解(一)
在vue1.0版本的超链接标签还是原来的a标签,链接地址由v-link属性控制 而vue2.0版本里超链接标签由a标签被替换成了router-link标签,但最终在页面还是会被渲染成a标签的 至于为什 ...
- verilog 异步复位代码
module reset_sync (input clk, input reset_in, output reset_out); (* ASYNC_REG = 'b1; (* ASYNC_REG = ...
- 【python】打印函数调用栈
traceback.print_stack()
- bzoj 1002
表示我这种蒟蒻面对这种递推第一思想显然是打表啊 先贴个用来打表的暴力: #include <cstdio> struct node { int l,r; }p[]; ]; ]; i ...
- 检查URL的可用性脚本
#!/bin/bash check_url() { HTTP_CODE=$(curl -o /dev/ -s -) ];then echo "Warning: $1 Access failu ...
- Loadrunner11.0 录制手机App脚本的方法二
lr11安装一个移动补丁以后,就可以支持抓包文件直接转换为http/html协议的脚本.下面简单说一下过程. 1.工作思路:手机连接可上外网wifi,在手机wifi中设置本机ip的网络地址,然后在本机 ...
- C++ Primer 笔记——嵌套类 局部类
1.嵌套类是一个独立的类,与外层类基本没什么关系.特别的是,外层类的对象和嵌套类的对象是相互独立的.在嵌套类的对象中不包含任何外层类定义的成员,在外层类的对象中也不包含任何嵌套类定义的成员. 2.嵌套 ...