前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python多进程显示进度条的优雅方案

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

作者头像
lyhue1991
发布2021-10-14 15:13:45
7.1K0
发布2021-10-14 15:13:45
举报
文章被收录于专栏:Python与算法之美

今日段子😋 :

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

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

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

一,单参数函数

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

代码语言:javascript
复制
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 函数代替偏函数,否则会报局部函数不可序列化的错误。

代码语言:javascript
复制
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))

以上。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法美食屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,单参数函数
  • 二,多参数函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档