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 | 3010 (1737) | Blisk |
| » | Kako masovno pingat?Oddelek: Programiranje | 10154 (8141) | ragezor |
| » | Arduino in luči (strani: 1 2 )Oddelek: Elektrotehnika in elektronika | 13093 (10719) | FX6300B |
| » | [c] Enaki datotekiOddelek: Programiranje | 1150 (1010) | Spura |
| » | Skripte (strani: 1 2 )Oddelek: Programiranje | 9330 (7193) | Microsoft |