2010-05-07 3 views
2

Je suis dans une situation où plusieurs threads lisent le même gros fichier avec des pointeurs de fichiers multi-vers le même fichier. Le fichier aura au moins 1 million de lignes. La longueur de chaque ligne varie de 500 caractères à 1500 caractères. Il n'y aura pas "écrire" des opérations sur le fichier. Chaque thread commencera à lire le même fichier à partir de différentes lignes. Quel est le moyen efficace ..? En utilisant le linecache de Python ou readline normal() ou est-ce qu'il y a un autre moyen efficace?Python: Lecture de fichier énorme en utilisant linecache Vs normal d'accès au fichier open()

+0

Avez-vous besoin d'utiliser le filetage? Il semble que les E/S disque seront le goulot d'étranglement, donc la lecture de différentes parties du fichier va provoquer plus de temps de recherche et ralentir les choses, plutôt que de les accélérer. – Thomas

+0

Oui, je dois utiliser des threads. Je travaille sur des tests de performance. Donc, ne veulent pas prendre des coups sur les deux lectures de fichiers, la gestion de la mémoire. – KALYAN

Répondre

2

Jetez un oeil sur le module mmap: http://docs.python.org/library/mmap.html

Il vous permettra d'utiliser le fichier comme un tableau, tandis que le système d'exploitation gère la lecture réelle et mise en mémoire tampon.

Questions connexes