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. DUILIB消息处理过程

    DUILIB消息处理机制 方法一. 首先窗口基类创建 CWindowWnd->Create() 调用 CWindowWnd->RegisterWindowClass() 注册 CWindo ...

  2. linux 安装oracle

    报错1:报display相关错误su - oracleDISPLAY=redhat64-2:1 --此处为远程会话地址(可以写localhost或IP均可)export DISPLAYcd /home ...

  3. SpringBoot Tomcat启动报错

    中间的桥梁就是下面这个依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over ...

  4. Spark机器学习基础二

    无监督学习 0.K-means from __future__ import print_function from pyspark.ml.clustering import KMeans #from ...

  5. C#操作Control异步工具类

    /// <summary> /// 异步工具类 /// </summary> public class TaskTools { /// <summary> /// ...

  6. 【Core】当前 .NET SDK 不支持将 .NET Core 2.2 设置为目标。请将 .NET Core 2.1 或更低版本设置

    问题起因: 新的电脑,打开core2.2的项目时,因为没有安装2.2 sdk,项目编译失败 所以在选择目标框架下拉框选择安装其他目标框架 会跳转到官网下载sdk:https://dotnet.micr ...

  7. 【编程语言】Kotlin之object关键字

    在一个体重秤项目里面使用Kotlin开发,考虑到项目比较小型轻量,所以和团队申请决定使用Kotlin开发,以此熟悉和尝试一下Kotlin. 首先使用Kotlin之后,发现能和Java很好的兼容一起,开 ...

  8. python之做一个简易的翻译器(二)

    把写好的python程序转换为windows系统下可以运行的exe文件 使用pyinstaller命令来进行转换 1.首先安装pyinstaller 可以在pycharm中安装,也可以直接使用pip命 ...

  9. 解决JS中取URL地址中的参数中文乱码

    GET请求会将中文编码,如果取出乱码的话,应该进行解码操作, 下面的函数是获取指定参数名的参数值,参数值可是中文.英文. function getQueryString(name) { var reg ...

  10. C语言实验一(2)

    #include<stdio.h>int main(){ char c1,c2; c1=97; c2=98; printf("c1=%c,c2=%c\n",c1,c2) ...