返回顶部
首页 > 资讯 > 后端开发 > Python >[python]map方法与并行执行
  • 531
分享到

[python]map方法与并行执行

方法pythonmap 2023-01-31 01:01:04 531人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

文章也可参考: 我的个人博客 1. 内建方法map 内建map方法可以通过一个序列的方式来实现函数之间的映射, 并且串行执行。如: import time from datetime import datetime def ad

文章也可参考: 我的个人博客

1. 内建方法map

内建map方法可以通过一个序列的方式来实现函数之间的映射, 并且串行执行。如:

import time
from datetime import datetime

def add(x, y):
    print(datetime.now(), "enter add func...")
    time.sleep(2)
    print(datetime.now(), "leave add func...")
    return x+y

map(add, [1,2,3], [4,5,6])

运行效果:

2016-04-05 15:01:49.382314 enter add func...
2016-04-05 15:01:51.383387 leave add func...
2016-04-05 15:01:51.383471 enter add func...
2016-04-05 15:01:53.385584 leave add func...
2016-04-05 15:01:53.385676 enter add func...
2016-04-05 15:01:55.387388 leave add func...
[5, 7, 9]

由上可见, 调用map, 相当于顺序调用了add(1,4), add(2,5), add(3,6)方法; 一行代码实现了方法的迭代调用, 简单快捷。
那如果再优化一下,实现并行调用add方法, 应该怎么做呢?在python里也好实现, 利用multiprocessing模块就可以。

2. multiprocessing模块与map方法

import time
from datetime import datetime
from multiprocessing.dummy import Pool as ThreadPool
from functools import partial


def add(x, y):
    print(datetime.now(), "enter add func...")
    time.sleep(2)
    print(datetime.now(), "leave add func...")
    return x+y


def add_wrap(args):
    return add(*args)


if __name__ == "__main__":
    pool = ThreadPool(4) # 池的大小为4
    print(pool.map(add_wrap, [(1,2),(3,4),(5,6)]))
    #close the pool and wait for the worker to exit
    pool.close()
    pool.join()

运行效果:

2016-04-05 15:10:23.690059 enter add func...
2016-04-05 15:10:23.690406 enter add func...
2016-04-05 15:10:23.690906 enter add func...
2016-04-05 15:10:25.693250 leave add func...
2016-04-05 15:10:25.693409 leave add func...
2016-04-05 15:10:25.693458 leave add func...
[3, 7, 11]

由上可以见, 我们已经实现了并行执行add方法

3. 关于multiprocessing中pool的大小与性能

from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool

以上Pool和ThreadPool两个模块, 一个基于进程工作, 一个基于线程工作。

一般来说, 使用进程池(multiprocessing pool)来执行CPU密集型的任务, 这样可以利用到多核的好处, 理论上(池越大)核越多速度越快;
使用线程池(threading)来处理io型任务, 则有个最佳线程池大小, 要根据实际情况来调节这个池的size(线程过多时, 切换线程的开销将严重影响性能)。

--结束END--

本文标题: [python]map方法与并行执行

本文链接: https://lsjlt.com/news/184157.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • [python]map方法与并行执行
    文章也可参考: 我的个人博客 1. 内建方法map 内建map方法可以通过一个序列的方式来实现函数之间的映射, 并且串行执行。如: import time from datetime import datetime def ad...
    99+
    2023-01-31
    方法 python map
  • Python并行执行for循环
    简介 在介绍如何最简单地利用 python 实现并行前,我们先来看一个简单的代码。 words = ['apple', 'bananan', 'cake', 'dumpling'] for word in words:...
    99+
    2023-01-31
    Python
  • Python并行化执行详细解析
    目录例子:N体问题普通计算方法效果图Python 并行化执行再举一个例子前言: 并行编程比程序编程困难,除非正常编程需要创建大量数据,计算耗时太长,物理行为模拟困难 例子:N体问题 ...
    99+
    2024-04-02
  • python 性能提升之 并行map
    前段时间进行单一目录下10万张图片发送,效果很差,数据积压原来越多。 性能问题提上议程。 采用多线程 多进程 感觉比较繁琐,网上有介绍 map的并行处理的,使用后性能提高明细。 网上介绍map如下 介绍:Map Map是一个很棒的小功能...
    99+
    2023-01-31
    性能 python map
  • MySQL8.0 InnoDB并行执行
    概述 MySQL经过多年的发展已然成为最流行的数据库,广泛用于互联网行业,并逐步向各个传统行业渗透。之所以流行,一方面是其优秀的高并发事务处理的能力,另一方面也得益于MySQL丰富的生态。MySQL在处理OLTP场景下的短查询效果...
    99+
    2015-09-29
    MySQL8.0 InnoDB并行执行
  • python执行js代码的方法
    目录什么是js代码混淆?正常代码混淆代码Python第三方包Execjs安装执行js什么是js代码混淆? 正常代码 我们现在看一段js代码,代码逻辑很简单,就是拼接时间返回。 function...
    99+
    2022-06-02
    python 执行js python 执行js代码
  • python执行shell命令的方法
    os模块os.system方式:import os os.system('top') os.system('cat /proc/cpuinfo')说明这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回。返回值是依赖于系统的,直接返回系...
    99+
    2023-01-31
    命令 方法 python
  • jenkins执行python脚本的方法
    在jenkins上打算运行一段python脚本,查到一些常用的方法,下面会介绍。还遇到了版本兼容性问题导致的怎么都执行不成功,最终试了各种版本,定位到兼容性问题,真是各种坑。一般有三种方法:1.安装执行python的插件: Python ...
    99+
    2023-01-31
    脚本 方法 jenkins
  • python执行系统命令4种方法与比较
    Python中执行系统命令常见的方法有以下4种 注意:以下实例代码在Python3.5下运行通过。 一、os.system方法 os.system(cmd) 在子终端运行系统命令...
    99+
    2024-04-02
  • python并发执行之多进程
        多进程顾名思义程序启动的时候运行多个进程,每个进程启动一条线程进行程序处理。 没启动一个进程就要单独划分一块内存资源。就像工厂的厂房。为了提高效率每多添加一条生产线就要单独再盖一个厂房。每个厂房相互是独立的。所以启动多进程是很消耗资...
    99+
    2023-01-31
    之多 进程 python
  • python 并发执行之多线程
        正常情况下,我们在启动一个程序的时候。这个程序会先启动一个进程,启动之后这个进程会拉起来一个线程。这个线程再去处理事务。也就是说真正干活的是线程,进程这玩意只负责向系统要内存,要资源但是进程自己是不干活的。默认情况下只有一个进程只会...
    99+
    2023-01-31
    之多 线程 python
  • python 基于Appium控制多设备并行执行
    前言:     如何做到,控制多设备并行执行测试用例呢。 思路篇   我们去想下,我们可以获取参数的信息,和设备的信息,那么​我们也可以针对每台设备开启不一样的端口服务。...
    99+
    2024-04-02
  • python 执行函数的九种方法
    目录方法一:直接调用函数运行方法二:使用偏函数来执行方法三:使用 eval 动态执行方法四:使用 getattr 动态获取执行方法五:使用类本身的字典方法六:使用 global() ...
    99+
    2024-04-02
  • 用jupyter执行python代码的方法
    1.首先打开Anaconda,找到jupyter然后启动它,或者在cmd中使用jupyter notebook命令启动jupyter,然后会打开jupyter主界面 2. 新建一个notebook 点击New,选择你希望启动的 noteb...
    99+
    2023-09-29
    python jupyter 开发语言
  • python执行系统命令的方法
        做为系统工程师来说,经常会用到python脚本去调用一下系统命令,现把经常使用的集中调用方法总结如下:一,os.system(command)在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态。...
    99+
    2023-01-31
    命令 方法 系统
  • Java并行执行任务的方案有哪些
    本篇内容介绍了“Java并行执行任务的方案有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景最近在排查生产环境问题,发现商品详情接口时...
    99+
    2023-06-25
  • shell 创建子进程及并行延时执行命令方法
    目录shell 创建子进程方法1. 什么是shell子进程2. shell什么情况下会产生子进程3.使用括号来创建子进程shell 创建子进程方法 1. 什么是shell子进程 子进程,是从父子进程的概念出发的,Unix...
    99+
    2023-01-12
    shell创建子进程 shell子进程创建
  • shell创建子进程及并行延时执行命令方法
    目录shell 创建子进程方法1. 什么是shell子进程2. shell什么情况下会产生子进程3.使用括号来创建子进程shell 创建子进程方法 1. 什么是shell子进程 子进...
    99+
    2023-01-12
    shell 创建子进程 shell 子进程创建
  • jQuery如何并行执行动画?
    这篇文章将为大家详细讲解有关jQuery如何并行执行动画?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jQuery 并行执行动画 jQuery 提供了强大的动画功能,允许开发者在网页元素上创建丰富的视觉...
    99+
    2024-04-02
  • Linux 查看历史命令并执行的方法
    查看历史命令,并执行指定命令 owen@owen:~/owen/software/nginx-1.10.1$ history | grep 'configure' 1083 ./configure 1109 ./c...
    99+
    2022-06-04
    Linux 查看 历史 命令
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作