![]() |
60000 Dateien mit Threads downloaden
Servus Leute,
ich muss in einem Programm 60000 Dateien ( legal! ) downloaden. Da das mit einem Thread fürchterlich lange dauert, würde ich dafür gerne eine gewisse Anzahlö an Threads starten, die die datei downloaden und dann einen neuen Thread starten. Die Seiten sind à la seite.com/download.php?id=* durchnummeriert. Allerdings habe ich keine Ahnung, wie ich das realisieren soll oder wieviele Threads ich starten soll ( 2000 Kbit down, 512MB Ram ). Habt ihr Tutorials, Ansatzpunkte oder Tipps dafür für mich? Gruß |
Re: 60000 Dateien mit Threads downloaden
wenn dus nur auf diesem systemb brauchst: ich würd einfach ausprobieren ab welcher threadanzahl das multithreading nur blockiert. ich denke so mehr als 500 dürft dein system auch nicht mehr flüssig bearbeiten...
|
Re: 60000 Dateien mit Threads downloaden
Ein Threading Tutorial gibt es hier:
![]() Lösen würde ich das über einen Steuerthread, der die Worker Threads verwaltet. Wie das geht kannst du hier bei diesem Portscanner gucken: ![]() |
Re: 60000 Dateien mit Threads downloaden
Zitat:
|
Re: 60000 Dateien mit Threads downloaden
auch der prozessor ;-) je schneller der ist desto mehr threads kannst du starten. kommt auch auf die benötigte rechenleistung der threads an!
|
Re: 60000 Dateien mit Threads downloaden
Öhm, also wenn der Prozessor langsamer ist, wie die Festplatte schreiben kann, dann hat er einen C64 Prozessor und eine moderne Festplatte. Der Flaschenhals ist definitiv die Festplatte. Selbst zwei Threads können keinen Sinn machen, wenn jeder von den beiden eine große datei schreiben soll. Die Festpaltte kann immer nur an einer Stelle gleichzeitig schreiben. Desweiteren verwaltet nicht der Prozessor die Threads, sondern das Betriebssystem.
|
Re: 60000 Dateien mit Threads downloaden
wer sagt dass er das unbedingt auf der festplatte speichern will? ich denke im ram behalten und am ende speichern reicht voll...
|
Re: 60000 Dateien mit Threads downloaden
Hallo!
Der Flaschenhals sind weder Prozessor noch Festplatte! Das erreichbare Tempo hängt ab von: 1. der Geschwindigkeit der Internet-Anbindung und 2. der Leistungsfähigkeit des Servers. Unter normalen Internet-Verhältnissen (Telefon oder DSL mit max. 3MBit/s) ist nämlich die Leitung das Problem. Zusatzlich kann es bei schnellen Leitungen auch passieren, daß der Server aufgrund weiterer Anfragen von anderen Stellen (der Anbieter hat nur "ein Stück vom Server" gemietet und teilt sich das Gerät mit belastenden Anwendungen) langsamer als die Verbindung ist. Da das Ganze für beide Übertragungsrichtungen gilt, halte ich das mal allgemein. Es ergibt keinen Sinn, die Übertragung mehrerer Dateien parallel auszuführen, wenn bereits eine Übertragung die Bandbreite voll beansprucht. Desweiteren ist es sinnlos, mehrere Übertragungen zu starten, wenn dadurch der Durchsatz einer nicht ausgelasteten Leitung nicht steigt. Dann kann der Partner nämlich nicht mehr verarbeiten (andere Nutzer oder Geschwindigkeitsproblem) und die Aufteilung verursacht nur Verzögerungen für die Verwaltung. Parallel übertragen ergibt nur dann Sinn, wenn Verbindungen zu mehreren Partnern bestehen und eine Verbindung die Bandbreite der Leitung nicht voll ausnutzen kann. Gruß Dietmar Brüggendiek |
Re: 60000 Dateien mit Threads downloaden
Einen schönen Ansatzpunkt für die Verwaltung eines Thread-Pools findest du im BDN:
![]() grüße, daniel |
Re: 60000 Dateien mit Threads downloaden
unter normalen bedingungen bist du am schnellsten dran, wenn du eins auf einmal runterlädst und mit dem download des nächsten kurz vor ende des letzen beginnst, um pausen zu vermeiden. (das ist für den fall, dass die verbindung bremst). wenn der eigene rechner bremst, ist es eigentlich egal, nur wie o.g. pausen verhindern. wenn der andere rechner bremst sind jegliche "umgehungsversuche" nicht unterstützenswert und daher auch o.g. prinzip am sinnvollsten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz