1.内容回顾

2.今日内容

3.创建-进程Process

4.join方法

5.进程之间数据隔离

1.内容回顾

# 进程 :是计算机中最小的资源分配单位
# 进程的三状态 :就绪 运行 阻塞
# 并发和并行 :
  # 并行 :在一个时刻上,有多个进程在被CPU计算
  # 并发 :在一个时间段上,有多个进程在被CPU计算
# 同步异步 :
  # 同步 :一件事情与另一件事情有一定的顺序
  # 异步 :两件事情可以同时进行
# 阻塞和非阻塞:
  # 阻塞 : input sleep recv accept recvfrom
  # 非阻塞 :不需要等待就可以直接完成的事情

2.今日内容

# 进程
# 如何去在python代码中 启动一个进程
# 新的模块 :multiprocessing
# 进程模块 :启动进程、基础的进程信息的获取、管理
# 进程的同步
# 进程之间的数据共享
# 进程之间的通信
# 进程池

3.创建-进程Process

import osimport timefrom multiprocessing import Process# print(os.getpid())  #线程id

def func():    time.sleep(1)    print('hello',os.getpid())

if __name__ == '__main__':    for i in range(10):        Process(target=func).start()  #开启进程    time.sleep(1)    print('hello2',os.getpid())

# 几个概念 :
  # 父进程 :父进程执行的过程中创建了子进程
  # 子进程 :
  # 主进程 :一般我们直接执行的那个程序就是主进程
# 为什么要有if __name__ == '__main__': windows操作系统开启子进程的方式问题
# 如何开启多个子进程  for  while

getppid()  #显示父进程

def func():    time.sleep(1)    print('hello',os.getpid(),os.getppid())

if __name__ == '__main__':    for i in range(3):        p = Process(target=func)        p.start()    time.sleep(1)    print('hello2',os.getpid())

# 如何给子进程传参数 ?

import timefrom multiprocessing import Process

def func(num,name):    print(num,'hello',name)

if __name__ == '__main__':    for i in range(10):        p = Process(target=func,args=(i,'yuan',))  #(,)不能一个元素        p.start()  #非阻塞    print('主进程')

# 子进程可以有返回值么?
  # 不能有返回值
# 因为子进程函数中的返回值无法传递给父进程,因为内存隔离的问题

4.join方法

# 主进程会默认等待子进程结束之后才结束# 父进程要负责回收子进程占用的操作系统资源import timefrom multiprocessing import Process

def wahaha():    time.sleep(3)    print('in wahaha')

if __name__  == '__main__':    Process(target=wahaha()).start()    print('主进程')
import timefrom multiprocessing import Process

def send_mail(n):    time.sleep(0.5)    print('发送邮件%s'%n)

if __name__ == '__main__':    l = []    for i in range(10):        p = Process(target=send_mail,args=(i,))        l.append(p)        p.start()    for p in l:        p.join()  #阻塞到所有子进程执行完    print('所有的邮件都已经发出')

5.进程之间数据隔离

from multiprocessing import Processn = 100def func():    global n    n = n - 1if __name__ == '__main__':    p_lst = []    for i in range(100):        p = Process(target=func)        p.start()        p_lst.append(p)    for p in p_lst:        p.join()    print(n)

day27_python_1124的更多相关文章

随机推荐

  1. ogg同步DDL时,源和目标端表空间名称不同的解决思路

    在OGG同步过程中,经常会碰上有创建表或表空间的同步,往往因为源和目标的平台不同,如aix->linux or linux->windows,这两个平台的表空间也经常不同,在目标端执行DD ...

  2. 虚拟蜜罐honeyd安装使用

    转https://blog.csdn.net/jack237/article/details/6828771

  3. Linux环境部署SVN服务器

    1. 安装SVN服务器: 检查是否已安装 # rpm -qa subversion 安装SVN服务器 # yum install httpd httpd-devel subversion mod_da ...

  4. 多线程threading 的使用

    在Python3中,通过threading模块提供线程的功能.原来的thread模块已废弃.但是threading模块中有个Thread类(大写的T,类名),是模块中最主要的线程类,一定要分清楚了,千 ...

  5. 升级python2.7, 实现python2.7与python3并存

    由于用到twilio模块, 所以需要升级一下python2, 但是又不想舍弃python2, 于是实现了简单的方法 python 先扔一块依赖 yum install zlib-devel bzip2 ...

  6. bzoj 4767 两双手 - 动态规划 - 容斥原理

    题目传送门 传送门I 传送门II 题目大意 一个无限大的棋盘上有一只马,设马在某个时刻的位置为$(x, y)$, 每次移动可以将马移动到$(x + A_x, y + A_y)$或者$(x + B_x, ...

  7. day15

    三元表达式 符合python语法的表达方式(形式,公式)称之为表达式 三元:三个元素 总体就是,由三个元素组成表达式其目的是为了简化书写,既然是简化必然有局限性三元表达式只能帮你简化仅有两个分支的if ...

  8. 论文笔记:Fast Online Object Tracking and Segmentation: A Unifying Approach

    Fast Online Object Tracking and Segmentation: A Unifying Approach CVPR-2019 2019-03-11 23:45:12 Pape ...

  9. 关于djangorestframework相关源码分析

    CBV APIView Request 局部全局钩子 认证组件 权限组件 频率组件 分页器组件

  10. vue安装过后遇到的坑

    vue在所有配置文件安装过之后: 运行 npm run dev 不能自动打开浏览器,但是命令行中已经提示我们运行成功了 等很久也没有自动打开浏览器,必须要自己手动的输入地址. 那么我们如何在npm r ...