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 进程与线程的更多相关文章

  1. Python3 进程、线程和协程

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 进程.线程和协程的对比 1.定义对比 进程:是系统进行资源分配的基本单位,每启动一个进程,操作系统都需要为其分配运 ...

  2. 11.python3标准库--使用进程、线程和协程提供并发性

    ''' python提供了一些复杂的工具用于管理使用进程和线程的并发操作. 通过应用这些计数,使用这些模块并发地运行作业的各个部分,即便是一些相当简单的程序也可以更快的运行 subprocess提供了 ...

  3. Python3 进程 线程 同步锁 线程死锁和递归锁

    进程是最小的资源单位,线程是最小的执行单位 一.进程 进程:就是一个程序在一个数据集上的一次动态执行过程. 进程由三部分组成: 1.程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成 2.数据 ...

  4. Python3学习之路~9.2 操作系统发展史介绍、进程与线程区别、线程语法、join、守护线程

    一 操作系统发展史介绍 参考链接:http://www.cnblogs.com/alex3714/articles/5230609.html 二 进程与线程 进程: 对各种资源管理的集合 就可以称为进 ...

  5. python之进程与线程

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

  6. python 进程和线程

    python中的进程.线程(threading.multiprocessing.Queue.subprocess) Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就 ...

  7. python中的进程、线程(threading、multiprocessing、Queue、subprocess)

    Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...

  8. python 学习笔记八 进程和线程 (进阶篇)

    什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执 ...

  9. Python自学笔记-进程,线程(Mr serven)

    对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了 ...

随机推荐

  1. Palindromic Squares

    链接 分析:求出b进制以后在判是否为回文 /* ID:wanghan PROB:palsquare LANG:C++ */ #include "iostream" #include ...

  2. vue 随笔3

    在整个vue项目中index.js只能有一个 ,创建vue组件实例的代码只能写在main.js中或者index.js中,别的文件中都是使用export default 常量 或者是方法

  3. IOS:程序的退出、App间的跳转

    今天在做一个音乐播放器的项目,发现这个点击退出程序的功能不能实现终于找到了一些有用的资料,就去网上看了半天资料,下面是退出程序的代码: 在动画里面可以自己添加一些,动画,达到相应的效果. AppDel ...

  4. Coursera Algorithms Programming Assignment 3: Pattern Recognition (100分)

    题目原文详见http://coursera.cs.princeton.edu/algs4/assignments/collinear.html 程序的主要目的是寻找n个points中的line seg ...

  5. Codeforces - 706B - Interesting drink - 二分 - 简单dp

    https://codeforces.com/problemset/problem/706/B 因为没有看见 $x_i$ 的上限是 $10^5$ ,就用了二分去做,实际上这道题因为可乐的价格上限是 $ ...

  6. PhpStorm之设置字体大小

    1.点击左上角的File,再点击setting:(Ctrl+Alt+S) 2.进入 Editor  /  General,选择 Change font size (Zoom) with Ctrl+Mo ...

  7. 洛谷P4867 Gty的二逼妹子序列(莫队+树状数组)

    传送门 本来打算用主席树 然后发现没办法维护颜色数 于是用了莫队加树状数组 然后竟然A了…… //minamoto #include<iostream> #include<cstdi ...

  8. Jquery Validate不是用submit按钮提交表单,使用a标签js代码都可以

    不多说,上代码. $("#form").validate(); $("#btn").click(function() { if($("#form&qu ...

  9. Luogu P2051[AHOI2009]中国象棋【dp】By cellur925

    题目传送门 题目大意:给定一个$n*m$的棋盘,求放三个“炮”使它们不共行也不共列的方案数.($n,m$$<=100$) 这题主要是转移比较困难,因为情况比较多,所以需要冷静大胆细心地进行分情况 ...

  10. sql mysql和sqlserver存在就更新,不存在就插入的写法(转)

    转自:http://hi.baidu.com/tidy0608/item/ff930fe2436f2601560f1dd9 sqlsever数据存在就更新,不存在就插入的两种方法 两种经常使用的方法: ...