Begrenzte Anzahl an Threads

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Codeagon
User
Beiträge: 12
Registriert: Sonntag 8. Dezember 2019, 17:25

Hallo,
Ich hätte da eine Frage. Mir ist aufgefallen, dass Python nur eine begrenzte Anzahl an Threads hat. Wenn zu viele Threads gleichzeitig laufen, dann kommt beim Starten eines Threads eine Fehlermeldung. Auf meinem Computer habe ich aber 8GB RAM, wobei Python nur sehr wenig auslastet und ich immer so 4GB RAM Luft habe. Kann man irgendwie einschalten, dass Python mehr Threads laufen lassen kann. Liegt die Begrenzung überhaupt am Abeitsspeicher oder vielleicht an etwas anderem. Danke schon mal im Vorraus. :wink:
Gruß
Das deutsche Python-Forum ist das beste Forum der Welt. :geek:
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Der Speicher hat nichts mit Threads zu tun.

Wie lautet denn die Fehlermeldung?

Wie erzeugst du Threads? (Bitte den Code zeigen, in Code-Tags schreiben)
Codeagon
User
Beiträge: 12
Registriert: Sonntag 8. Dezember 2019, 17:25

Die Fehlermeldung ist sowieso in 'nem try, aber die Fehlemeldung lautet: can't start new thread.
Das deutsche Python-Forum ist das beste Forum der Welt. :geek:
Codeagon
User
Beiträge: 12
Registriert: Sonntag 8. Dezember 2019, 17:25

Ich hab das echte Programm zwar grade nicht hier, aber dieses Program ergibt den gleichen Fehler:

Code: Alles auswählen

from threading import Thread
import time

def ab():
    time.sleep(1)
    
while True:
    t = Thread(target = ab)
    t.start()
    
Aber wenn man das time.sleep(1) raus nimmt kommt kein Fehler, weil der Thread glaube ich nicht mehl läuft.

Code: Alles auswählen

from threading import Thread
import time

def ab():
    pass
    
while True:
    t = Thread(target = ab)
    t.start()
    
Zuletzt geändert von Codeagon am Sonntag 8. Dezember 2019, 19:12, insgesamt 1-mal geändert.
Das deutsche Python-Forum ist das beste Forum der Welt. :geek:
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Anzahl der Threads pro Process ist vom Betriebssystem begrenzt, weil jeder Thread verschiedenste Resourcen braucht und es wenig Sinn macht, zu viele davon zu haben.

Warum willst Du überhaupt so viele Threads erzeugen? Es gibt immer intelligentere Lösungen.
Codeagon
User
Beiträge: 12
Registriert: Sonntag 8. Dezember 2019, 17:25

Ich will testen, ob man mit Durchschnittscomputern Passwörter knacken kann und brauche dafür viele Threads.
Das deutsche Python-Forum ist das beste Forum der Welt. :geek:
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mehr Threads als Kerne ist eh Unfug. Paralleler wird es nicht. Und Google mal Python GIL - und wirf deine threads weg.
Codeagon
User
Beiträge: 12
Registriert: Sonntag 8. Dezember 2019, 17:25

Heißt das jetzt, dass ich auch ohne Threads, genauso schnell bin?
Das deutsche Python-Forum ist das beste Forum der Welt. :geek:
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

Sogar schneller.
Codeagon
User
Beiträge: 12
Registriert: Sonntag 8. Dezember 2019, 17:25

Danke
Ich hab es ausprobiert und ihr habt Recht. Aber gibt es noch andere Möglichkeiten um ein Python-Programm schneller laufen zu lassen?
Das deutsche Python-Forum ist das beste Forum der Welt. :geek:
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja. Schneller sogar. Aber natürlich ist multiprocessing eine Option. Sowas mit Python zu machen ist aber eh eine schlechte Idee. Das ist ja keine Performante Sprache.
Codeagon
User
Beiträge: 12
Registriert: Sonntag 8. Dezember 2019, 17:25

Wenigstens weiß ich jetzt, dass man mit Python so schnell keine Passwörter von zip-Dateien knacken kann. :)
Das deutsche Python-Forum ist das beste Forum der Welt. :geek:
Antworten