| 
 
	积分3625贡献 精华在线时间 小时注册时间2014-10-21最后登录1970-1-1 
 | 
 
| 
'''
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  【需求缘起】
 工作中经常遇到计算量大的情况,例如读取9898个文件,这就需要用多进程了,
 但读取每个文件都用一个进程显然不对,因为新建和销毁进程也会消耗时间,
 我考虑把文件尽量均匀得分成若干组,再由多进程处理
 
 【简化问题】
 把12生效尽量均匀地分成5份
 
 【解决思路】
 12/5取整,每组2个是够的,把这些分下去,
 5组是:2+2+2+2+2
 还剩2个,这2个再平分给2组
 分配结果:3+3+2+2+2
 '''
 import numpy as np
 
 # x是待分组的原始序列,m是想要分成的组数:
 # x是一维ndarray或list或字符串都行
 def fairGroup(x,m):
 n=len(x)
 x=list(x)
 if m>n:
 print('组数大于总数量\n那就每个元素分一组')
 m=n
 
 u=int(n/m) # 每组分得的最小个数
 remain=n-m*u # 剩余个数
 y=np.ones((m))*u # 现在每组分得最小个数
 y[0:remain]=y[0:remain]+1 # 将剩余的平分给前面的组
 y=np.array(y,dtype=int)
 result=[]
 # 每分出若干个元素,就把这些元素从x中删掉,再分下一组:
 for i in y:
 result.append(tuple(x[0:i]))
 del x[0:i]
 return result
 
 if __name__=="__main__":
 m=5
 x=['鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪']
 print(fairGroup(x,m))
 x='鼠牛虎兔龙蛇马羊猴鸡狗猪'
 print(fairGroup(x,m))
 x=np.arange(13)
 print(fairGroup(x,m))
 
 
 
 
 
 
 
 | 
 |