Closed bdrum closed 4 years ago
The default cache is too small in your case. You can define and pass your own cache to lazyarray()
like this, in this example a 23MB
cache:
data = events.lazyarrays("*", basketcache=uproot.cache.ThreadSafeArrayCache(23 * 1024**2)))
That's right—this error message comes from the cachetools library, which we don't control, and it's a pretty mysterious message. (The cache is too small to add this one new item to it. In cases like that, it should probably accept that the cache will exceed the limit or just not add the item.) This is getting fixed.
Thank you! It works!
Actually I tried to use
mycache = uproot.cache.ArrayCache(100 * 1024 * 1024)
itsl0 = events.lazyarray("HasPointOnITSLayer0", cache=mycache)
but result was the same...
Okay, seems I have to study full description instead of code pieces 😅
Hi.
First of all many thanks for the nice tool!
I've got such error when try to use lazyarray instead of just array:
Such code
has provided to me the error:
I've found out that in case of I added the index like that:
It works, but I would like to work without indexes as in numpy style, I mean masked array: Something like this:
Just for the info I have 1 135 259 events and this branch (HasPointOnITSLayer0) has such description asdtype("('>i4', (177,))").
I will use this issue also for asking a question about performance features:
Actually this tree works fine without any special features e.g. dask, lazy array and so on, but I have another one that 8x times greater.
This is the reason why I've started to use lazy arrays, but perhaps someone could advice me some 'the best practice' scheme for working with such data volumes, because just arrays