Wie die Intervalle gebildet werden hab ich auch schon und wie Threads funktionieren habe ich auch schon verstanden. Das einzige was ich nicht verstehe ist, wie man nun die Rechnung bzw das Intervall in die 4 Worker-Threads übergibt. Ich würde mich freuen wenn mir das einer erklären könnte.Beispiel: Es soll geprüft werden, ob 17 eine Primzahl ist, d.h. es wird 16! mod
17 berechnet. Es sollen 4 Threads benutzt werden, also wird das Intervall 1..16
in 4 Teilintervalle aufgeteilt: 1..4, 5..8, 9..12, 13..16. Diese werden den 4
Worker-Threads per Parameter übergeben.
Mit freundlichen Grüßen
Code: Alles auswählen
import threading
class PrimzahlThread(threading.Thread):
def __init__(self, zahl):
super().__init__()
self.Zahl = zahl
def run(self):
summe = 1
i = 1
for i in range(1,self.Zahl):
#summe = summe * i
summe=((summe%self.Zahl)*(i%self.Zahl))%self.Zahl
if summe%self.Zahl==self.Zahl-1:
print(self.Zahl, "is PZ!")
else:
print(self.Zahl, "ist KEINE PZ!")
t_threads=4
intervall=[]
for i in range(t_threads):
intervall.append([int(i*(self.Zahl-1)/t_threads+1), int((i+1)*(self.Zahl-1)/t_threads)])
print(intervall)
meine_threads = []
eingabe = input("> ")
while eingabe != "e":
try:
thread = PrimzahlThread(int(eingabe))
meine_threads.append(thread)
thread.start()
except ValueError:
print("Falsche Eingabe!")
eingabe = input("> ")
for t in meine_threads:
t.join()