Forum » Programiranje » [Python] Numpy.loadtxt pogoj za delovanje?
[Python] Numpy.loadtxt pogoj za delovanje?
BlueWhale ::
V kodi poskušam prebrati veliko količino datotek, pri čemer se s parametrom read=True ali False odločim, ali bom datoteke res brala ali ne (potrebujem obe možnosti). Delam s parallel python. Poglavitni deli kode:
Vse dela ok za r = read_data(db, read=True), za read=False pa ne. V tem primeru se zanka ustavi po približno 500 prebranih datotekah, vedno na drugem mestu (okoli 500. fajla). S tem, da se ustavi, mislim na to, da se zdi, kot da potrebuje neskončno časa, da bo prebral naslednjo datoteko.
Če za namene testiranja odkomentiram vrstico 9 (self.sp = None), je za read=True vse ok. Zaplete se, če zgornjo vrstico z loadtxt zbrišem. V tem primeru je obnašanje enako, kot če je read=False - ustavi se okoli 500. fajla. Ni nobenih errorjev.
Če spremenim kodo v funkciji f:
dela vse normalno v vseh primerih.
Zdi se, da če ne uporabim funkcije loadtxt, se nekje ustavi. Če jo uporabim 'kar tako' (test v vrstici 4 v funkciji f), pa dela normalno.
Kje bi lahko bil problem? Ali je problem v paralelizaciji?
Hvala!
class Data: ... def setData(self, x=False): if x: self.data = x else: try: self.data = np.loadtxt(self.path) # self.data = None except IOError as e: print 'WARN' ... def read_data(db, read=True): ppservers = () if ncpus: job_server = pp.Server(ncpus, ppservers=ppservers) else: job_server = pp.Server(ppservers=ppservers) jobs = [job_server.submit(f, (x, read,), (), ('numpy as np', 'from Data import Data', )) for x in db] data = [x() for x in jobs] return data def f(db, read=True): x=Data() x.setPath(db) # reading other parameters if read: x.setData() return x if __name__ == "__main__": # db: list of strings, len(db)=1000 ... r = read_data(db, read=True) r2 = read_data(db, read=False)
Vse dela ok za r = read_data(db, read=True), za read=False pa ne. V tem primeru se zanka ustavi po približno 500 prebranih datotekah, vedno na drugem mestu (okoli 500. fajla). S tem, da se ustavi, mislim na to, da se zdi, kot da potrebuje neskončno časa, da bo prebral naslednjo datoteko.
Če za namene testiranja odkomentiram vrstico 9 (self.sp = None), je za read=True vse ok. Zaplete se, če zgornjo vrstico z loadtxt zbrišem. V tem primeru je obnašanje enako, kot če je read=False - ustavi se okoli 500. fajla. Ni nobenih errorjev.
Če spremenim kodo v funkciji f:
if read: x.setData() else: test=np.loadtxt(x.path) # spremenljivke test kasneje ne uporabim
dela vse normalno v vseh primerih.
Zdi se, da če ne uporabim funkcije loadtxt, se nekje ustavi. Če jo uporabim 'kar tako' (test v vrstici 4 v funkciji f), pa dela normalno.
Kje bi lahko bil problem? Ali je problem v paralelizaciji?
Hvala!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | KeyloggerOddelek: Programska oprema | 2697 (1424) | Blisk |
» | Kako masovno pingat?Oddelek: Programiranje | 9262 (7249) | ragezor |
» | Arduino in luči (strani: 1 2 )Oddelek: Elektrotehnika in elektronika | 12262 (9888) | FX6300B |
» | [c] Enaki datotekiOddelek: Programiranje | 1051 (911) | Spura |
» | Skripte (strani: 1 2 )Oddelek: Programiranje | 8885 (6748) | Microsoft |