Hi,
I just joined this list, I am using PyTables for my project and it works
great and fast.
I am just trying to optimize some parts of the program and I noticed that
zipping the tuples to get one tuple per column takes much longer than
reading the data itself. The thing is that readWhere() returns one tuple
per row, whereas I I need one tuple per column, so I have to use the zip()
function to achieve this. Is there a way to skip this zip() operation?
Please see below:
def quote_GetData(self, period, name, dt1, dt2):
"""Returns timedata.Quotes object.
Arguments:
period -- value from within infogetter.QuotePeriod
name -- quote symbol
dt1, dt2 -- datetime.datetime or timestamp values
"""
t = time.time()
node = self.quote_GetNode(period, name)
ts1 = misc.datetime2timestamp(dt1)
ts2 = misc.datetime2timestamp(dt2)
L = node.readWhere( \
"(timestamp/1000 >= %f) & (timestamp/1000 <= %f)" % \
(ts1/1000, ts2/1000))
rowNum = len(L)
Q = timedata.Quotes()
print "%s: took %f seconds to do everything else" % (name,
time.time()-t)
t = time.time()
if rowNum > 0:
(Q.timestamp, Q.open, Q.close, Q.high, Q.low, Q.volume, \
Q.numTrades) = zip(*L)
print "%s: took %f seconds to ZIP" % (name, time.time()-t)
return Q
*And the printout:*
BOVESPA.VISTA.PETR4: took 0.068788 seconds to do everything else
BOVESPA.VISTA.PETR4: took 0.379910 seconds to ZIP
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Pytables-users mailing list
Pytables-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pytables-users