Hallo,
ich möchte gerne ein csv file mit 4 threads gleichzeitig einlesen. so das jeder thread 15% einliest. ich kenn zwar ide normale csv read funktion und die funktioniert auch super, aber wie kann man da die start und endrow definieren?
oder gibt es hierzu eine bessere möglichkeit?
danke!
csv file mit mehreren threads einlesen
Nun ja, die Frage ist, was du damit erreichen möchtest. Schneller wird es durch Multithreading sicher nicht werden.bcit6k hat geschrieben:ich möchte gerne ein csv file mit 4 threads gleichzeitig einlesen. so das jeder thread 15% einliest. ich kenn zwar ide normale csv read funktion und die funktioniert auch super, aber wie kann man da die start und endrow definieren?
oder gibt es hierzu eine bessere möglichkeit?
BTW, bei 4 * 15% fehlt dir hinterher was ...
@bcit6k: Das geht nicht, weil man nicht mitten drin anfangen kann mit dem Lesen, da man ja nicht weiss, wo die Zeilen beginnen, ohne die Datei von vorne bis zur gewünschten Zeile zu lesen.
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Selbst wenn es ginge, die Festplatte hat trotzdem nur einen Lesekopf.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Vielleicht liegt die Datei ja auf einem RAID, für maximale Performance!Rebecca hat geschrieben:Selbst wenn es ginge, die Festplatte hat trotzdem nur einen Lesekopf.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- User
- Beiträge: 18
- Registriert: Mittwoch 1. Juli 2009, 14:20
So würde ich sagen geht das nicht, wegen den schon erwähnten Problemen meiner Vorredner.bcit6k hat geschrieben:Hallo,
ich möchte gerne ein csv file mit 4 threads gleichzeitig einlesen. so das jeder thread 15% einliest. ich kenn zwar ide normale csv read funktion und die funktioniert auch super, aber wie kann man da die start und endrow definieren?
oder gibt es hierzu eine bessere möglichkeit?
danke!
ABER so könnte es gehen:
1. EineHauptroutine öffnet den File
2. Liest eine Zeile ein und übergibt die Verarbeitung an einen Thread
3. Wiederhole 2. bis MAX-Thread's beschäftigt
4. Warte bis 1x Thread fertig und gehe zu 2.
Es ist auch möglich hier gleich 2-3 Zeilen zu lesen, damit der Thread was zu tun hat.....
MfG
Christian
Hoi,
@amiganer68: Das ist doch tierisch aufwendig, oder? In der Regel ist die Aufbereitung des Inhalts fixer als das eigentliche Lesen des Files - selbst wenn es sehr groß ist. Also Threading oder MPI kommt doch erst in Frage, wenn die Daten - in welcher Form auch immer - im Speicher sind: Das eigentliche Rechnen bezieht sich nur in seltenen Fällen auf die einzelnen Zeilen. Vielleicht können einzelne Threads bei großen Datenmengen noch temporäre Files verwalten - aber die sind dann auch spezifisch für jeden Thread.
Also das effizienteste Tool für diese Art von Daten in der Pythonwelt ist IMHO ohnehin PyTables. Den Autor, Francesc, mal eben so überbieten ist sicher eine Herausforderung ...
Gruß,
Christian
@amiganer68: Das ist doch tierisch aufwendig, oder? In der Regel ist die Aufbereitung des Inhalts fixer als das eigentliche Lesen des Files - selbst wenn es sehr groß ist. Also Threading oder MPI kommt doch erst in Frage, wenn die Daten - in welcher Form auch immer - im Speicher sind: Das eigentliche Rechnen bezieht sich nur in seltenen Fällen auf die einzelnen Zeilen. Vielleicht können einzelne Threads bei großen Datenmengen noch temporäre Files verwalten - aber die sind dann auch spezifisch für jeden Thread.
Also das effizienteste Tool für diese Art von Daten in der Pythonwelt ist IMHO ohnehin PyTables. Den Autor, Francesc, mal eben so überbieten ist sicher eine Herausforderung ...
Gruß,
Christian
-
- User
- Beiträge: 18
- Registriert: Mittwoch 1. Juli 2009, 14:20
Das ist aufwendig, stimmt. Doch kennen wir ja den eigentlichen Hintergrund nicht. Wenn es nur darum geht, die Daten in eine Datenbank zu schreiben, ist der Aufwand mit den Threads sicherlich zuviel, dann ist einfach ein Programm, einlesen und schreiben in DB einfacher.CM hat geschrieben:Hoi,
@amiganer68: Das ist doch tierisch aufwendig, oder? In der Regel ist die Aufbereitung des Inhalts fixer als das eigentliche Lesen des Files - selbst wenn es sehr groß ist. Also Threading oder MPI kommt doch erst in Frage, wenn die Daten - in welcher Form auch immer - im Speicher sind: Das eigentliche Rechnen bezieht sich nur in seltenen Fällen auf die einzelnen Zeilen. Vielleicht können einzelne Threads bei großen Datenmengen noch temporäre Files verwalten - aber die sind dann auch spezifisch für jeden Thread.
Doch wollte ich dem Frager eine Möglichkeit geben, wie es denn doch gehen könnte, hier ist der Gedanke an einen Master-Thread sicherlich nicht verkehrt und die Festplatte dürfte noch immer langsamer sein als der Computer, so dass er die Daten schon im Hintergrund aufarbeiten kann. Wir wissen allerdings auch nicht, wie aufwendig das ist...
Da sollte man doch mal vorbei schauen...CM hat geschrieben:Also das effizienteste Tool für diese Art von Daten in der Pythonwelt ist IMHO ohnehin PyTables. Den Autor, Francesc, mal eben so überbieten ist sicher eine Herausforderung ...
MfG
Christian