ich möchte das beste Verhältnis zwischen einem Multiplikator und zwei Konstanten berechnen. Das passiert in drei for-Schleifen, die zusammen 64.000.000 Mal durchlaufen sollen, wenn ich mich nicht verrechnet habe. Das Programm crasht jedoch schon sehr schnell (Bruchteil einer Sekunde) ohne exception. Bei mehreren Versuchen kam der Counter auf 2000 bis 9000.
Das Einzige, was in der Console steht, ist: Process finished with exit code -1073740940 (0xC0000374). Danach googlen brachte nichts.
Das Ganze passiert in python 3.9. Als UI verwende ich pyqt5.
Woran könnte es liegen?
Code: Alles auswählen
def start(self) -> None:
thread = Thread(target=self.calculate2)
thread.start()
def calculate2(self) -> None:
counter: int = 0
# result values
rw1: float = 1000
rw2: float = 1000
rw3: float = 1000
rw4: float = 1000
rMulti: float = 0
rConst1: int = 0
rConst2: int = 0
for i, v in enumerate(np.arange(0, 10, 0.1)):
for const1 in range(800):
for const2 in range(800):
multi = round(v, 1)
ms1 = 1.1 * multi
ms2 = 2.1 * multi
ms3 = 3.1 * multi
ms4 = 4.1 * multi
w1 = 1259 + const1 - (const2 * (1 - pow(2, (ms1 * -1))))
w2 = 1259 + const1 - (const2 * (1 - pow(2, (ms2 * -1))))
w3 = 1259 + const1 - (const2 * (1 - pow(2, (ms3 * -1))))
w4 = 1259 + const1 - (const2 * (1 - pow(2, (ms4 * -1))))
wSum = (abs(w1 - self.default1) +
abs(w2 - self.default2) +
abs(w3 - self.default3) +
abs(w4 - self.default4))
rwSum = (abs(rw1 - self.default1) +
abs(rw2 - self.default2) +
abs(rw3 - self.default3) +
abs(rw4 - self.default4))
if wSum < rwSum:
rw1 = w1
rw2 = w2
rw3 = w3
rw4 = w4
rMulti = multi
rConst1 = const1
rConst2 = const2
counter += 1
self.lbl_progress.setText(str(counter))
self.lbl_progress.setText("multi: " + str(round(rMulti, 1)) + "\n"
"const1: " + str(rConst1) + "\n"
"const2: " + str(rConst2) + "\n"
"1.1: " + str(round(rw1)) + " / " + str(self.default1) + "\n"
"2.1: " + str(round(rw2)) + " / " + str(self.default2) + "\n"
"3.1: " + str(round(rw3)) + " / " + str(self.default3) + "\n"
"4.1: " + str(round(rw4)) + " / " + str(self.default4))