» »

[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:
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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Keylogger

Oddelek: Programska oprema
352697 (1424) Blisk
»

Kako masovno pingat?

Oddelek: Programiranje
449262 (7249) ragezor
»

Arduino in luči (strani: 1 2 )

Oddelek: Elektrotehnika in elektronika
9812262 (9888) FX6300B
»

[c] Enaki datoteki

Oddelek: Programiranje
71051 (911) Spura
»

Skripte (strani: 1 2 )

Oddelek: Programiranje
508885 (6748) Microsoft

Več podobnih tem