# -*- 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)
一个最优化均分数值的函数,返回一个下标数值的列表,常用于Python多进程运算
最新推荐文章于 2024-09-03 17:22:28 发布