问题:当第一个参数过大的情况下,基本跑不出来,半个小时都没反应,第一个是期数的意思,在我的机器上高于32,基本就挂了。跑半天没反应,如何解决呢,为什么出现这个情况,谢谢,因为是新手,请教高手解释下。这个函数的参数在主程序中会不断调用,而且参数的数值也是不断的变化.目的为了寻找出这5个参数的最佳数值。如何解决?
相关代码函数如下:
def zhuitable(mqishu,lirui,beishu,zhushu,jiangjin):
lztable=[]
sqishu=1
leijijintouru=0
lilv=0
shangqijiner=0
for x in range(1,mqishu+1):
sqishu=x
benqitouru=beishu*2*zhushu
leijijintouru=leijijintouru+benqitouru
benqiyingli=beishu*jiangjin
leijiyingli=benqiyingli-leijijintouru
lilv=leijiyingli/leijijintouru
if lilv<lirui:
leijijintouru=leijijintouru-benqitouru
while lilv<lirui:
beishu=beishu+1
benqitouru=beishu*2*zhushu
leijijintouru=leijijintouru+benqitouru
benqiyingli=beishu*jiangjin
leijiyingli=benqiyingli-leijijintouru
lilv=leijiyingli/leijijintouru
small=str(sqishu)+':'+str(beishu)+':'+str(benqitouru)+':'+str(leijijintouru)+':'+str(benqiyingli)+':'+str(leijiyingli)+':'+str(format(lilv*100,'.2f'))+'%'
lztable.append(small)
return lztable
if name == "__main__":
yanzheng=zhuitable(32,0.01,1,1,21)
for xm in yanzheng:
print(xm)
数据量本身就很大。众所周知,所有的彩票游戏都必须制造尽可能低的概率来让那些蠢得和猴子一样的傻子拼命投钱。
这个只是1个函数,单从这个函数的调用来讲,第一个参数大于32就不行了。我用JS或者.net都可以很快的运行出结果,而且调用第一个参数的数字取值100,都可以很快出结果。不知道为什么python确实运行不出来,一直运算的状态,等个几十分钟都还是这个状态。这里面如何优化这个函数呢,我机器32G的内存,I7的CPU,应该是够用的,
这种性能问题,需要拆开几步来分析,比如把第一个参数的降低,看是否可以计算出来。如果可以,那么就说明数据量太大了,这样可以再第一个参数很大的时候,先不进行计算,只是把数据拿出来写到内存,或文件等中,然后再慢慢计算。同时增加一些日志信息等,看每一步计算到了哪里,这样就知道具体最后性能卡在什么位置