python3 进程与线程
1.进程定义
狭义的定义: 进程是正在运行的程序的实例。
广义的定义:进程是一个具有 一定独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
我们都知道程序,一个程序是静态的,通常是存放在外存中的。而当陈旭被调入内存中运行后,就成了进程。顾名思义,进程就是进行中的程序,它是个动态的概念。是系统进行资源分配与调度的基本单位。
2.线程定义
线程: 一堆指令的集合
一个进程内部可能包含了很多顺序执行流,每个顺序执行流就是一个线程。
每个进程启动时候会自动启动一个线程,通常这个线程被称之为主线程。 其他的线程可以由主线程创建,每个线程可以创建自己的子线程
3.进程与线程的区别:
1.线程共享内存空间,每个进程则是相互独立的。(比如word不能访问qq)
2.一个进程里的线程之间可以直接交流(数据共享),两个进程想通信必须通过一个中间代理来实现,进程间是相互独立的不能直接通信。
3..创建新线程很简单,创建新进程需要对齐父进程进行一次克隆。(duplication)
4.一个线程可以控制和操作同一进程里的其他线程,但是进程只能操作其子进程
5.对于主线程的修改可能会影响到其他线程的运行。但是对父进程的修改不会影响到其子进程,但是不能挂掉父进程,如果挂掉父进程则子进程也会挂掉。
4.多线程实例:
单线程:
import threading,time def run(n):
print("task",n)
time.sleep() starttime = time.time()
#t1 = threading.Thread(target=run,args=("t1",))
#t2 = threading.Thread(target=run,args=("t2",))
#t1.start()
#t2.start() run("t1")
run("t2") endtime = time.time()
print(endtime-starttime) 执行结果:
[python@heaven-00 0906]$ python threadingtest.py
task t1
task t2
4.004261016845703
多线程:
import threading,time def run(n):
print("task",n)
time.sleep() starttime = time.time()
t1 = threading.Thread(target=run,args=("t1",)) #注意此处args参数 即使是一个参数后面也要有“,”
t2 = threading.Thread(target=run,args=("t2",))
t1.start()
t2.start() #run("t1")
#run("t2") endtime = time.time()
print(endtime-starttime) 执行结果:
[python@heaven-00 0906]$ python threadingtest.py
task t1
task t2
0.0005490779876708984
通过对比可以看出,多线程时候程序会在一个线程运行时候并行运行后面的代码,大大提高了工作效率。
通过类启用线程:
import threading,time class MyThread(threading.Thread): #定义自己的线程类,继承threading.Thread类
def __init__(self,n):
super(MyThread,self).__init__() #重构
self.n = n def run(self):
print("running task ",self.n) t1 = MyThread("t1")
t2 = MyThread("t2") t1.run()
t2.run()
python3 进程与线程的更多相关文章
- Python3 进程、线程和协程
Infi-chu: http://www.cnblogs.com/Infi-chu/ 进程.线程和协程的对比 1.定义对比 进程:是系统进行资源分配的基本单位,每启动一个进程,操作系统都需要为其分配运 ...
- 11.python3标准库--使用进程、线程和协程提供并发性
''' python提供了一些复杂的工具用于管理使用进程和线程的并发操作. 通过应用这些计数,使用这些模块并发地运行作业的各个部分,即便是一些相当简单的程序也可以更快的运行 subprocess提供了 ...
- Python3 进程 线程 同步锁 线程死锁和递归锁
进程是最小的资源单位,线程是最小的执行单位 一.进程 进程:就是一个程序在一个数据集上的一次动态执行过程. 进程由三部分组成: 1.程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成 2.数据 ...
- Python3学习之路~9.2 操作系统发展史介绍、进程与线程区别、线程语法、join、守护线程
一 操作系统发展史介绍 参考链接:http://www.cnblogs.com/alex3714/articles/5230609.html 二 进程与线程 进程: 对各种资源管理的集合 就可以称为进 ...
- python之进程与线程
什么是操作系统 可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统.还有没有其他的? 想想我们使用的手机,Google公司的Androi ...
- python 进程和线程
python中的进程.线程(threading.multiprocessing.Queue.subprocess) Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就 ...
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
- python 学习笔记八 进程和线程 (进阶篇)
什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执 ...
- Python自学笔记-进程,线程(Mr serven)
对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了 ...
随机推荐
- Ruby: Print WIN32OLE method names in Ruby
class WIN32OLE def list_ole_methods method_names = ole_methods.collect {|m| m.name} puts m ...
- Android 开发:由模块化到组件化
在Android SDK一文中,我们谈到模块化和组件化,现在我们来聊聊组件化开发背后的哪些事.最早是在广告SDK中应用组件化,但是同样适用于普通应用开发 以下高能,请做好心理准备,看不懂请发私信来交流 ...
- uCareSystem:Ubuntu/Linux Mint的一体化系统更新和维护工具
对于任何一款允许用户还原电脑到之前状态(包括文件系统,安装的应用,以及系统设置)的操作系统来说,系统还原功能都是必备功能,它可以恢复系统故障以及其他的问题. 有的时候安装一个程序或者驱动可能让你的系统 ...
- 【旧文章搬运】Windbg+Vmware驱动调试入门(三)---Windbg基本调试入门
原文发表于百度空间,2009-01-09========================================================================== 这一节的内 ...
- DDK编写64位驱动时加入x64汇编的方法
上篇讲了如何在编写x64应用程序时加入x64汇编,这里来说说如何在编写x64驱动时加入x64汇编. 一.在asm文件中单独编写功能函数 比如要实现一个64位的加法函数,原型如下: ULONG64 my ...
- C++ 多项目dll调用-隐式
将DAA人脸检测做成动态库以便其他程序调用,采用隐式调用完成. 给出部分关于dll制作的关键代码: 1.DLL 多项目DLL编写注意将其他相关项目设置成静态库,以及各库涉及的版本一致性. DLL.h ...
- 4、html的body内标签之input系列
一.input标签与form表单 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- TP5之安全机制
防止sql注入 1.查询条件尽量使用数组方式,具体如下: $wheres = array(); $wheres['account'] = $account; $wheres['password'] = ...
- 51nod 1051 最大子矩阵和(DP)
题意 略 分析 一道经典的DP题,但是我弱到差点做不出来,真的垃圾 设置\(sum(i,j)代表1-i行第j列的前缀和\),然后枚举行i和行j,再枚举列k,做一遍类似一维的最大子段和即可 #inclu ...
- PTA 计算平均值
现在为若干组整数分别计算平均值. 已知这些整数的绝对值都小于100,每组整数的数量不少于1个,不大于20个. 输入格式:首先输入K(不小于2,不大于20).接下来每一行输入一组数据(至少有一组数据), ...