Asd...Originariamente inviato da Claudio Vituzzi
grazie mille a tutti e due.
io comunque intendevo il controllare l'esistenza dei un file su disco mille volte al secondo, e non ogni 5-6 secs...
ciao!
Ma perchè devi farlo mille volte al secondo.
Puoi anche seguire il ciclo mille volte ma controllare se esiste il file ogni 10 secondi.
Forse ti sarà utile questa libreria:
In pratica crei un nuovo oggetto:package Cycle; # Fornisce alcune funzione per l'esecuzione di sub a tempi determinati.
use strict;
use Time::HiRes;
# Ad esempio se vogliamo eseguire una funzione solo 3 secondo dopo l'ultima volta che è stata eseguita
# allora si userà questa funzione.
# Le funzioni che fanno uso di questa libreria non contano molto
# sul tempo ma la sfruttano solo per limitare il carico della CPU.
sub new {
my ($package, $cycle)=@_;
my $timer=bless({},$package);
$timer->{last}=0;
$timer->{every}=$cycle;
return $timer;
}
sub check {
my $timer=shift;
return undef if Time::HiRes::time()-$timer->{'last'}<$timer->{every};
$timer->{'last'}=Time::HiRes::time();
return 1;
}
1;
my $oggetto=Cycle->new(0.1); # L'argomento sono i secondi.
# Il tempo in secondi è quello che ti serve per specificare ogni quanto fare il controllo
if ($oggetto->check) {
print "posso fare ora il controllo\n";
[controllo]
}
Questa libreria l'ho scritta io e mi serve appunto per eseguire del codice all'interno di alcuni blocchi, in modo limitato.
Anche io infatti avevo cicli che si ripetono molto, ma alcuni controlli li limiti a 3 4 volte al secondo, oppure una volta ogni 20 secondi.
Nel tuo caso userei questo metodo controllando se il file esiste, una volta ogni 3-4 secondi.
E' brutto?

Rispondi quotando