Perché l'apertura di più file richiede così tanto tempo?


1

Di recente, ho posto la seguente domanda su SO :

Ho una cartella foocon migliaia di .htmlfile di circa 300 Kb ciascuno.

Ecco cosa faccio per aprirli:

 import os
 import time

 folder_name = 'foo'
 for file_name in os.listdir(folder_name):
     t = time.time()
     with open(os.path.join(folder_name, file_name)) as f:
         print(time.time() - t, 'seconds to open', file_name)

Ed ecco l'output che ottengo:

 1.6057319641113281 seconds to open 1.html
 1.3181514739990234 seconds to open 2.html
 1.1490132808685303 seconds to open 3.html
 1.2970092296600342 seconds to open 4.html
 1.0074846744537354 seconds to open 5.html
 1.5122349262237549 seconds to open 6.html
 1.1730327606201172 seconds to open 7.html
 1.9992561340332031 seconds to open 8.html

 etc.

Ho un SSD e sono abbastanza sorpreso che ci voglia un secondo per aprire un piccolo file.

È normale? In caso contrario, cosa si può fare per accelerarlo?

Ho erroneamente pensato che il mio problema fosse specifico di Python. Ora l'ho provato su un altro PC e ci vogliono millisecondi (come dovrebbe).

Inoltre, la compressione di molti file di piccole dimensioni richiede anche circa 1 secondo per file. Quindi il problema è che Windows 10 impiega più di 1 secondo per aprire un file.

C'è qualcosa che posso fare al riguardo? (tranne reinstallare l'intera cosa)


3
Potrebbe essere la protezione antivirus in tempo reale che sta ritardando l'apertura dei file? Prova a disabilitare temporaneamente AV mentre esegui nuovamente il test. Altrimenti, dovrai utilizzare un monitor delle prestazioni per scoprire dove il programma sta trascorrendo il suo tempo. A proposito, non conosco Python, ma non dovresti chiudere ogni file dopo l'apertura, o è implicito riutilizzando lo stesso fad ogni passaggio? Migliaia di handle di file aperti sarebbero destinati ad avere un impatto sulle prestazioni.
AFH,

1
@AFH withesegue la chiusura quando l'esecuzione lascia il suo campo di applicazione.
gronostaj,

@gronostaj - Grazie, stavo solo indovinando: dalla mia esperienza con lingue precedenti, come Fortran, PL / 1 e C, sovrascrivere un puntatore a un file era una buona cosa perdere maniglie.
AFH,

@AFH: ho disabilitato la "protezione in tempo reale" di Windows Defender e il problema è scomparso. Grazie molto! Si prega di pubblicarlo come risposta in modo che io possa accettarlo. Ma è comunque strano: l'altro PC su cui l'ho provato aveva questa "protezione in tempo reale" attiva ma non ha causato alcun problema.
Leone

Risposte:


1

Potrebbe essere che la protezione antivirus in tempo reale stia ritardando l'apertura dei file. È possibile verificare se questa è la causa disabilitando temporaneamente AV mentre si esegue nuovamente il test.

Dai tuoi commenti, non posso spiegare perché ci sarebbe una differenza tra due macchine diverse se eseguono lo stesso software AV, a meno che le impostazioni non siano diverse, comprese eventuali esclusioni di cartelle o tipi di file.

Se le differenze nelle impostazioni non sono la causa, dovrai utilizzare un monitor delle prestazioni per scoprire dove il correttore AV in tempo reale sta trascorrendo il suo tempo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.