一个最优化均分数值的函数,返回一个下标数值的列表,常用于Python多进程运算

# -*- coding: utf-8 -*-
"""
Created on Sat Jul 20 00:22:05 2019
一个最优化均分数值的自定义函数
一个自动均分并返回数字下标的函数,常用于多进程运算,可以用来均分大表格,再使用多进程加速运算,最后合并运算结果
@author: user
"""

def jfsz(zs,fs):#总的可均分数量,准备均分的份数
    assert zs>0 and fs>0,'函数jfsz报错,总的可均分数量(当前值:%s)和准备均分的份数(当前值:%s)都应当大于0' % (zs,fs)
    assert zs>=fs,'函数jfsz报错,总的可均分数量(当前值:%s)应当大于等于准备均分的份数(当前值:%s)' % (zs,fs)
    assert zs==int(zs) and fs==int(fs),'函数jfsz报错,总的可均分数量(当前值:%s)、准备均分的份数(当前值:%s)都应当是整数' % (zs,fs)
    cfjc=divmod(zs,fs)
    js=0#设计一个计数器
    yus=cfjc[1]#余数
    step=cfjc[0]#商,也就步长
    lslb=[]#收集字段下标的临时列表
    qs=0#初始化起始数
    while js < fs:
        if yus>0:
            qzs=qs+step+1
            lslb.append([qs,qzs])#但余数还没有分完时,每个步长内都多分一个
            qs=qzs
            yus=yus-1#减少余数的数量,因为已经分了一个出去
        else:
            qzs=qs+step
            lslb.append([qs,qzs])#当余数已经分完,则本步长内不再额外多分
            qs=qzs
        js=js+1
    return lslb
try:
    print(jfsz(13,3))#例子,将13个数量均分为3份
except Exception as exc:
    print("抛出异常:%s" % exc)

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值