For Loop stopt manchmal und machmal nicht
Verfasst: Dienstag 22. März 2011, 16:10
I habe ein Problem mit einem Foor Loop der Mathematische berechnungen macht, jedes 10te mal läuft das programm voll durch, aber die anderen Male hängt es fest. Auf dem Task Manager sieht man dass der CPU load zuerst hoch ist und plötzlich auf 0 abfällt wenn das Programm hängen bleibt.
Code siehe hier:
Code siehe hier:
Code: Alles auswählen
from pyexcel import *
import gc
import math
import numpy as num
import copy
import datetime
class calstat():
def __init__(self,calfile): # läuft perfekt durch
wbread=Workbook(False,calfile)
self.Arange={}
self.Brange={}
self.Crange={}
self.Srange={}
self.Overload={}
self.PAR={}
self.SN=wbread.ReadCell('iSAR',5,6)
date=wbread.ReadCell('iSAR',6,6)
year=int(date/365.252252252252)+1899
day=int((date/365.252252252252-int(date/365.252252252252))*365.252252252252)
self.date=datetime.date(year,12,31)+datetime.timedelta(days=day)
Aarray=num.zeros([256])
for ws in range(1,wbread.CountWorksheets()+1):
calstate=wbread.ReadCell(ws,3,5) #check if it is a calibration sheet (3E=256)
if calstate==256:
freq=str(int(wbread.ReadCell(ws,6,5)))
modname=wbread.ReadCell(ws,10,5)
levels=wbread.ReadCell(ws,9,5)
self.Overload[modname]=wbread.ReadCell(ws,14,5)
colA=int(6+levels*2)
colB=int(colA+1)
colC=int(colB+1)
#print colA,colB,colC
if modname=='CW':
#Arange=wbread.ReadCol(ws,colA)
Aread=wbread.ReadCol(ws,colA)
for a in range(256):
Aarray[a]=Aread[a,0]
self.Arange[freq]=copy.copy(Aarray) # needs to be copied, for not to be a pointer
if levels==7:
self.Brange[modname]=wbread.ReadCol(ws,colB)
self.Crange[modname]=wbread.ReadCol(ws,colC)
#data has to be called as self.Brange['CW'][1,0]
wbread.Close()
def readreference(self,sensortype,Gel):
#sensortype: old, new, FXX
#Gel: HSL, MSL
BCfile='../input/'+sensortype+'_'+Gel+'_mod.csv'
BC=num.loadtxt(BCfile,dtype='S20',delimiter=';',skiprows=3)
self.BCref={}
for bci in range(num.size(BC,0)):
self.BCref[BC[bci,0]]=BC[bci,1:5]
def curveErrors(self,modname): # Diese Funktion ist die welche Probleme macht
eSARV=num.array([0.019,0.049,0.115,0.246,0.495,0.732,1.067])*(10**(self.Overload[modname]/10))
eSARdbsensor=num.zeros([7])
eSARdBrefx=num.zeros([7])
eSARdBrefy=num.zeros([7])
errorvalues=num.zeros([256])
A=13.9
#ref points
for k in range(7):
#print "for1"+str(k)
eSARdBrefx[k]=A+10*math.log10(eSARV[k])+float(str(self.BCref[modname][0]))*math.log10(1+float(str(self.BCref[modname][1]))+eSARV[k])
eSARdBrefy[k]=A+10*math.log10(iSARV[k])+float(str(self.BCref[modname][2]))*math.log10(1+float(str(self.BCref[modname][3]))+eSARV[k])
#sensors
for s in range(256):
print "for2"+str(s)
for k in range(7): #Manchmal bleibt der Code hier hängen
iSARdbsensor[k]=A+10*math.log10(iSARV[k])+self.Brange[modname][s,0]*math.log10(1+self.Crange[modname][s,0]+eSARV[k])
if s%2==0:
print "if" #Manchmal bleibt der Code hier hängen
errorvalues[s]=math.sqrt(sum((eSARdbsensor-eSARdBrefx)**2)/7)
else:
print "else" #Manchmal bleibt der Code hier hängen
errorvalues[s]=math.sqrt(sum((eSARdbsensor-eSARdBrefy)**2)/7)
self.Srange[modname]=errorvalues