目录:

一、进程

  1. 多任务的概念
  2. 创建子进程----fork【Linux】
  3. 全局变量在多个进程中不共享

  4. 多次fork()
  5. 创建进程----multiprocessing【windows】

二、线程


一、进程:

1、多任务概念:多个任务同时进行

(图片来源于https://www.cnblogs.com/wj-1314/p/8263328.html)

  • 并发:CPU单核完成多个任务的执行,常用的调度算法:时间片轮转、优先级调度;由于每个任务执行的时间片较短,所以让人觉得多个任务同时在进行。

  • 并行:多个CPU完成多个任务的执行。只能在多核CPU上实现,且CPU核数要比任务数量多。

2、创建进程---fork【Linux】

  • 进程VS程序:

程序:编写完毕的代码,在没有运行时称为程序。

进程:正在运行着的代码,即进程。进程除了包含代码还需要运行的环境。

  • fork():创建进程
import os
import time ret = os.fork() if ret == 0:
while True:
print("----1----")
time.sleep(1)
else:
while True:
print("----2----")
time.sleep(1)

父进程运行到ret = os.fork()时,产生子进程,父进程ret 得到的值为>0,子进程ret = 0,两者就可以进行并行。操作系统中规定,父进程fork之后产生的ret值是大于0的,子进程ret = 0。

os.getpid():获取当前进程的id。

os.getppid():获取当前进程父进程的id。

3、全局变量在多个进程中不共享

4、多次fork():

第一个fork():红色为父进程,绿色为其产生的子进程。父和子进程打印1和2.

第二个fork():父进程又产生一个子进程,打印11和22。子进程也产生一个子进程,也打印11和22.

故打印一次1和2,两次11和22。

第一次fork():父进程产生一个子进程,两者打印1和2.

第二次fork():父进程又产生一个子进程,打印11和22

故共打印一次1和2,一次11和22

总共产生2^3个进程。

fork()炸弹:以下代码一旦执行,电脑可能会崩掉。

5、创建进程----multiprocessing【windows】

Process实现的进程,主进程会等所有子进程执行完毕之后才关闭;

注意:multiprocessing模块在交互模式是不支持的,故在jupyter下也不执行。

  • 包: from multiprocessing import Process
  • 创建一个进程:Process()
  • Process中的参数:

target = func,表示调用函数,即要创建的进程,

args = [ 要传入func中的参数]

  • 与Process相关的常用函数:

start():#让这个进程开始执行func函数里的代码,

p.join():   #堵塞,等待进程结束再执行以下代码

def test(a):
while True:
print(" ----test----")
time.sleep(1)
i = [0,1]
p = Process(target = test,args =(i) ) #创建一个进程,创建test函数对象
p.start() #让这个进程开始执行test函数里的代码
p.join() #堵塞,等待进程结束再执行以下代码
print('----main---')

Python笔记(29)----进程的更多相关文章

  1. python学习笔记——守护进程

    1 基本描述 守护进程:是系统中独立的后台服务进程, 特点:独立与终端并且周期性地执行某个任务,其生命周期长,一般随系统启动和终止. 缺点:进程的创建和销毁的时候需要消耗较多的计算机资源. 2 参考 ...

  2. python笔记9 线程进程 threading多线程模块 GIL锁 multiprocessing多进程模块 同步锁Lock 队列queue IO模型

    线程与进程 进程 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及如何完成:数据集则是程序在执行过程中所需要 ...

  3. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  4. python笔记 - day7

    python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...

  5. python笔记 - day5

    python笔记 - day5 参考: http://www.cnblogs.com/wupeiqi/articles/5484747.html http://www.cnblogs.com/alex ...

  6. python笔记之调用系统命令

    python笔记之调用系统命令 目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数, ...

  7. python笔记之subprocess模块

    python笔记之subprocess模块 [TOC] 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spaw ...

  8. guxh的python笔记一:数据类型

    1,基本概念 1.1,数据类型 基本数据类型:字符串,数字,布尔等 引用数据类型:相对不可变(元组),可变(列表,字典,集合等) 基本数据类型存放实际值,引用数据类型存放对象的地址(即引用) ==:判 ...

  9. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块)   一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...

  10. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

随机推荐

  1. Clojure:通过cursive连接远程REPL服务器

    配置很简单,步骤如下:1.    选择Edit Configurations…2.    选择Clojure REPL -> Remote3.    输入远程服务器的ip和端口. 最后点运行就可 ...

  2. 怎样跟程序猿谈一场没有Bug的恋爱

    <iframe width="580" height="90" align="center,center" id="cpro ...

  3. Javaproject集成log4J 1.x

    log4j是Java开发平台中的日志管理工具,是Apache基金会的一个开源项目.它的作用能够简单的理解为在开发过程中替代system.out的功能. 1.在project中集成log4j: (1)在 ...

  4. 升级DM5校验

    1,将某个文件生成带DM5的文件,使用srec_cat工具: read A   #原始文件 srec_cat $A -o 要生成的文件名称  -Line_Length 46 -Address_Leng ...

  5. Google android source code build 问题总结【转】

    本文转载自:http://light3moon.com/2015/01/31/Google%20android%20source%20code%20build%20%E9%97%AE%E9%A2%98 ...

  6. C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )

    你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )   一个家庭 相当于 一个空间,这个空间里 有 很多元素,比如 爱,爱这个抽象事物,可能有很多动作,接吻.交流,对于一 ...

  7. 用Thymeleaf在前台下拉列表取值

    转自:https://blog.csdn.net/u013600907/article/details/76165748

  8. Win7系统专栏

    1.去掉Win7快捷方式小箭头的方法如下: 使用普通方法会使系统出现异常,比如开始菜单程序无法删除.收藏夹无法展开等,网上流传使用透明图标的方法会在快捷方式上留下一块黑痣,下面的方法是小君研究出来的, ...

  9. diaowen Maven Webapp

    五月 , :: 上午 org.apache.catalina.startup.VersionLoggerListener log INFO: Server version: Apache Tomcat ...

  10. Kubernetes Port Forward 机制访问 pod

    需求:研发需要调试部署的pod是否能正常提供访问,但又不对pod进行暴露到集群外. 实现:通过Kubernetes的Port Forward机制对本机端口映射到pod端口来实现 1.安装kubectl ...