专栏首页Python与算法之美Python多进程显示进度条的优雅方案

Python多进程显示进度条的优雅方案

今日段子😋 :

林深时见鹿🦌, 海蓝时见鲸🐳, 夜深时见鬼👻。

使用multiprocessing进程池的imap方法,可以将函数依次作用到可迭代对象上各个元素,并发送到多个进程中执行。配合tqdm库,我们可以通过进度条显示多进程代码的整体执行进度!

这是一段非常强大和人性化的代码组合!

一,单参数函数

如果我们要多次执行的函数只有一个参数,这个参数在多进程任务中依次取可迭代对象中各个值,可以参照如下代码范例。

from multiprocessing import Pool
from tqdm import tqdm 
import math
import numpy as np 

def func(x):
    return math.sin(x)+math.cos(x)
with Pool(processes = 20) as pool:
    result = list(tqdm(pool.imap(func, np.linspace(0,2*math.pi,1000)), total=1000))

二,多参数函数

对于多参数函数,如果我们只想对它的一个参数在多进程任务中依次取可迭代对象中各个值,其他参数固定,可以使用偏函数构造出单参数函数。注意,不可以使用lambda 函数代替偏函数,否则会报局部函数不可序列化的错误。

from multiprocessing import Pool
from tqdm import tqdm 
import numpy as np 
import math 
import time 
from functools import partial 

def func(x,y):
    time.sleep(0.1)
    return math.sin(x)+math.cos(y)
  
with Pool(processes = 20) as pool:
    result = list(tqdm(pool.imap(partial(func,y = math.pi), np.linspace(0,2*math.pi,1000)), total=1000))

以上。

本文分享自微信公众号 - Python与算法之美(Python_Ai_Road),作者:梁云1991

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-09-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在 Python 程序中显示进度条

    转自 http://my.oschina.net/jhao104/blog/681507 1、利用标准输出 先说一下文本系统的控制符: \r: 将光标移...

    Crossin先生
  • Python 程序执行时如何显示进度条?

    先来说下 tqdm 的使用场景,工作中有时候会遇到这样的问题,想要将某个任务执行很多次,显而易见,可以使用 for 循环来控制它重复执行很多次。

    abs_zero
  • Android多线程+单线程+断点续传+进度条显示下载

    用户2032165
  • Android编程实现显示在标题上的进度条功能

    本文实例讲述了Android编程实现显示在标题上的进度条功能。分享给大家供大家参考,具体如下:

    砸漏
  • Python 给下载文件显示进度条和下载时间的实现

    大家在下载文件时能够显示下载进度和时间非常好,其实实现它方法很简单,这里我写了个进度条的模块,其中还附带上了运行时间也就是下载时间了。

    砸漏
  • Python HTTP下载文件并显示下载进度条功能的实现

    下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条。

    砸漏
  • python生成器函数的应用场景举例---为copy过程添加进度条显示

    生成器的特点是可以迭代,通过dir 查看生成器的方法, 其中有next , send 方法,我们如果调用其next或者send方法都可以获得其下一个元素的值,我...

    qsjs
  • Android编程实现通知栏进度条效果的方法示例

    本文实例讲述了Android编程实现通知栏进度条效果的方法。分享给大家供大家参考,具体如下:

    砸漏
  • 18式优雅你的Python

    文章授权转载自 Python与算法之美,粗体文字为生信宝典的修改和补充。文后有生信宝典原创的系列Python学习教程(Python2和Python3)。

    生信宝典
  • 18 种方法来优雅你的 Python

    Python 讲求的一个目标就是 Pythonic,很多情况下我们会追求 Python 的代码更加优雅的写法。这里分享一篇文章,这里列举了非常全面的方法来优雅 ...

    崔庆才
  • python笔记55-有哪些 pythonic 的优雅语法能让你面试加分?

    现在面试的时候经常会考几个 python 基础的代码题,从答题者的解答代码就很容易看出一个人的代码水平。 一般笔试考代码题,主要是考察应聘者的代码是解决的这一个...

    上海-悠悠
  • 【推荐收藏】18式优雅你的Python

    在cmd中输入jupyter notebook --generate-config,然后找到生成的配置文件 jupyter_notebook_config.py...

    Sam Gor
  • 你熟悉Python的代码规范吗?如何一键实现代码排版

    首先,各个编程语言都有自己的代码规范,统一的代码规范,不仅能提高代码的可读性,还能提升代码的维护性,团队内部的集成也会更加顺畅,同时也能更轻易发现代码的问题。

    吾非同
  • Perl、PHP、Python、Java

    ◆ (RoR)与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java和.NET大象般的身影

    py3study
  • 如何在Python中优雅地使用进度条?

    tqdm在Arabic阿拉伯语言中是进度"progress"的意思。使用tqdm模块可以通过进度条的方式非常优雅地显示循环的进度。

    lyhue1991
  • 左手用R右手Python系列——使用多进程进行任务处理

    数据抓取中的密集任务处理,往往会涉及到性能瓶颈,这时候如果能有多进程的工具来进行支持,那么往往效率会提升很多。 今天这一篇分享在R语言、Python中使用调用多...

    企鹅号小编
  • 写出漂亮 Python 代码的 20条准则

    通常,当我们在学校学习时,编程美学不是一个关键问题。用 Python 写代码时,个人也会遵循自己的风格。然而,当我们必须花大把时间来理解一个人的隐式代码时,这项...

    公众号机器学习与生成对抗网络
  • 左手用R右手Python系列5——数据切片与索引

    今天这篇跟大家分享我的R VS Pyhton学习笔记系列5——数据索引与切片。 我之前分享过的所有学习笔记都不是从完全零基础开始的,因为没有包含任何的数据结构与...

    数据小磨坊
  • 还在Bug不断?不妨试试这2个装__技巧

    程序员每天遇到bug就像喝水吃饭一样稀松平常,关键在于怎么高效而不失优雅的面对这些bug!所以,你还在固执的使用try……except吗?

    luanhz

扫码关注云+社区

领取腾讯云代金券