Python基础之如何使用multiprocessing模块

 更新时间:2021年06月06日 11:19:12   作者:松鼠爱吃饼干  
今天带大家学习python多进程的相关知识,文中对multiprocessing模块的使用作了非常详细的介绍,需要的朋友可以参考下

一、multiprocessing模块

multiprocessing包是Python中的多进程管理包。与threading.Thread类似,它可以使用multiprocessing.Proces 对象来创建一个进程。

该进程可以运行在Python程序内部编写的函数。该Process对象与Thread对象的用法相同,也start(),run()的方法。

此外multiprocessing包中也有Lock/Event/Semaphore/Condition类(这些对象可以像多线程那样,通过参数传递给各个进程),用以同步进程,其用法与threading包中的同名类一致。

所以,multiprocessing的很大一部份与threading使用同一套API,只不过换到了多进程的情境。接下来我们通过一个案例学习:

import time
import multiprocessing
 
def download () :
    print("开始下载文件...")
    time.sleep(1)
    print("完成下载文件...")
 
def upload() :
    print("开始上传文件...")
    time.sleep(1)
    print("完成上传文件...")
 
#download()
# upload()
#多进程与多线程的使用方式是差不多的
download_process = multiprocessing.Process(target=download)
upload_process = multiprocessing. Process(target=upload)
if _name_ == '_main_':
    #多进程必须要在 if _name_ == "_main_”里面
    download_process.start()
    upload_process.start ()
    #默认情况下,主进程代码运行完毕之后会等待子进程结束
    print('--主进程运行完了---')

上述代码是一个非常简单的程序,一旦运行这个程序,按照代码的执行顺序,download 函数执行完毕后才能执行upload 函数﹒如果可以让download和upload同时运行,显然执行这个程序的效率会大大提升。

要点:

  • 进程(Process)是资源分配的最小单位
  • 多进程是Python程序中实现多任务的一种方式,使用多进程可以大大提高程序的执行效率

二、进程的创建

  • 导入进程包

import multiprocessing

  • 通过进程类创建进程对象

进程对象= multiprocessing.Process()

  • 启动进程执行任务

进程对象.start()

通过进程类创建进程对象

进程对象=multiprocessing.Process(target=任务名)

三、进程的参数传递

带有参数的任务

进程执行带有参数的任务传参有两种方式:

  • 元组方式传参∶元组方式传参一定要和参数的顺序保持一致。
  • 字典方式传参:字典方式传参字典中的key一定要和参数名保持一致。

到此这篇关于Python基础之如何使用multiprocessing模块的文章就介绍到这了,更多相关multiprocessing模块的使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java字符串操作和C#字符串操作的不同小结

    Java字符串操作和C#字符串操作的不同小结

    在JAVA语言中,字符串数据实际上由String类所实现的。下面这篇文章主要给大家介绍了关于Java字符串操作和C#字符串操作的不同的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-12-12
  • Java二维数组与稀疏数组相互转换实现详解

    Java二维数组与稀疏数组相互转换实现详解

    在某些应用场景中需要大量的二维数组来进行数据存储,但是二维数组中却有着大量的无用的位置占据着内存空间,稀疏数组就是为了优化二维数组,节省内存空间
    2022-09-09
  • Java计算数学表达式代码详解

    Java计算数学表达式代码详解

    这篇文章主要介绍了Java计算数学表达式代码详解,具有一定借鉴价值,需要的朋友可以了解下。
    2017-12-12
  • java面试常见模式问题---代理模式

    java面试常见模式问题---代理模式

    代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息
    2021-06-06
  • java读取文件内容的三种方法代码片断分享(java文件操作)

    java读取文件内容的三种方法代码片断分享(java文件操作)

    本文介绍java读取文件内容的三种方法,代码可以直接放到程序中使用,大家参考使用吧
    2014-01-01
  • 手把手带你用java搞定汉诺塔

    手把手带你用java搞定汉诺塔

    这篇文章主要给大家介绍了关于Java青蛙跳台阶问题的解决思路与代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • Scala中的mkString的具体使用方法

    Scala中的mkString的具体使用方法

    这篇文章主要介绍了Scala中的mkString的具体方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 使用IDEA创建一个vert.x项目的方法

    使用IDEA创建一个vert.x项目的方法

    这篇文章主要介绍了使用IDEA创建一个vert.x项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Mybatisplus主键生成策略算法解析

    Mybatisplus主键生成策略算法解析

    这篇文章主要介绍了Mybatisplus主键生成策略算法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • java使用OGEngine开发2048

    java使用OGEngine开发2048

    众所周知OGEngine是国人对AndEngine改进后的国产Java编程的游戏引擎,除了支持3D游戏这个鸡肋功能之外AndEngine的功能OGEngine都有,而且AndEngine缺少的多点触摸功能也被国人完善了。今天我们就尝试下使用OGEngine制作热门游戏2048.
    2015-03-03

最新评论