That is 25x speedup. Note that cPickle's format is binary. Using the
textual format makes for more readable pickles, but reduces the
speedup to "only" 9.5x on my machine.
P.S.
Before someone says that using pickle is unsafe, remember that he is
considering *eval* as the alternative. :-)
>
0.0603079795837 40234>>len(d2)
>
170000
>
That is 25x speedup. Note that cPickle's format is binary. Using the
textual format makes for more readable pickles, but reduces the
speedup to "only" 9.5x on my machine.
>
P.S.
Before someone says that using pickle is unsafe, remember that he is
considering *eval* as the alternative. :-)
import cPickle as pickle
a="{2:3,4:6,2:7 }"
s=pickle.dumps( a, -1)
g=pickle.loads( s);
print g
'{2:3,4:6,2:7}'
Thank you very much for your answer but result is a string ??
On Oct 18, 6:35 pm, "Diez B. Roggisch" <de...@nospam.w eb.dewrote:
Abandoned wrote:
On Oct 18, 6:14 pm, "Diez B. Roggisch" <de...@nospam.w eb.dewrote:
Abandoned wrote:
Thanks you all answer..
But "eval" is very slow at very big dictionary {2:3,4:5,6:19.. ..}
(100.000 elements)
Is there any easy alternative ?
>
How big? How slow? For me, a 10000-element list takes 0.04 seconds to be
parsed. Which I find fast.
>
Diez
>
173.000 dict elements and it tooks 2.2 seconds this very big time for
my project
>
Where does the data come from?
>
Diez
Data come from database..
I want to cache to speed up my system and i save the dictionary to
database for speed up but eval is very slow for do this.
Not: 2.2 second only eval operation.
On Thu, 18 Oct 2007 08:41:30 -0700, Abandoned wrote:
import cPickle as pickle
a="{2:3,4:6,2:7 }"
s=pickle.dumps( a, -1)
g=pickle.loads( s);
print g
'{2:3,4:6,2:7}'
>
Thank you very much for your answer but result is a string ??
In Python terms yes, strings in Python can contain any byte value. If you
want to put this into a database you need a BLOB column or encode it as
base64 or something similar more ASCII safe.
On Oct 18, 6:51 pm, Marc 'BlackJack' Rintsch <bj_...@gmx.net wrote:
On Thu, 18 Oct 2007 08:41:30 -0700, Abandoned wrote:
import cPickle as pickle
a="{2:3,4:6,2:7 }"
s=pickle.dumps( a, -1)
g=pickle.loads( s);
print g
'{2:3,4:6,2:7}'
>
Thank you very much for your answer but result is a string ??
>
In Python terms yes, strings in Python can contain any byte value. If you
want to put this into a database you need a BLOB column or encode it as
base64 or something similar more ASCII safe.
>
Ciao,
Marc 'BlackJack' Rintsch
'{2:3,4:6,2:7}' already in database, i select this and convert to real
dictionary..
On Oct 18, 6:35 pm, "Diez B. Roggisch" <de...@nospam.w eb.dewrote:
>Abandoned wrote:
On Oct 18, 6:14 pm, "Diez B. Roggisch" <de...@nospam.w eb.dewrote:
>Abandoned wrote:
Thanks you all answer..
But "eval" is very slow at very big dictionary {2:3,4:5,6:19.. ..}
(100.000 elements)
Is there any easy alternative ?
>>
>How big? How slow? For me, a 10000-element list takes 0.04 seconds to
>be parsed. Which I find fast.
>>
>Diez
>>
173.000 dict elements and it tooks 2.2 seconds this very big time for
my project
>>
>Where does the data come from?
>>
>Diez
>
Data come from database..
I want to cache to speed up my system and i save the dictionary to
database for speed up but eval is very slow for do this.
Not: 2.2 second only eval operation.
Does the dictionary change often?
And you should store a pickle to the database then. Besides, making a
database-query of that size (after all, we're talking a few megs here) will
take a while as well - so are you SURE the 2.2 seconds are a problem? Or is
it just that you think they are?
On Oct 18, 6:57 pm, "Diez B. Roggisch" <de...@nospam.w eb.dewrote:
Abandoned wrote:
On Oct 18, 6:35 pm, "Diez B. Roggisch" <de...@nospam.w eb.dewrote:
Abandoned wrote:
On Oct 18, 6:14 pm, "Diez B. Roggisch" <de...@nospam.w eb.dewrote:
Abandoned wrote:
Thanks you all answer..
But "eval" is very slow at very big dictionary {2:3,4:5,6:19.. ..}
(100.000 elements)
Is there any easy alternative ?
>
How big? How slow? For me, a 10000-element list takes 0.04 seconds to
be parsed. Which I find fast.
>
Diez
>
173.000 dict elements and it tooks 2.2 seconds this very big time for
my project
>
Where does the data come from?
>
Diez
>
Data come from database..
I want to cache to speed up my system and i save the dictionary to
database for speed up but eval is very slow for do this.
Not: 2.2 second only eval operation.
>
Does the dictionary change often?
>
And you should store a pickle to the database then. Besides, making a
database-query of that size (after all, we're talking a few megs here) will
take a while as well - so are you SURE the 2.2 seconds are a problem? Or is
it just that you think they are?
>
Diez- Hide quoted text -
>
- Show quoted text -
I'm very confused :(
I try to explain main problem...
I have a table like this:
id-1 | id-2 | value
23 24 34
56 68 66
56 98 32455
55 62 655
56 28 123
..... ( 3 millions elements)
I select where id=56 and 100.000 rows are selecting but this took 2
second. (very big for my project)
I try cache to speed up this select operation..
And create a cache table:
id-1 | all
56 {68:66, 98:32455, 62:655}
When i select where id 56 i select 1 row and its took 0.09 second but
i must convert text to dictionary..
Have you got any idea what can i do this conver operation ?
or
Have you got any idea what can i do cache for this table ?
import cPickle as pickle
a="{2:3,4:6,2:7 }"
s=pickle.dumps( a, -1)
g=pickle.loads( s);
print g
'{2:3,4:6,2:7}'
>
Thank you very much for your answer but result is a string ??
Because you gave it a string. If you give it a dict, you'll get a
dict:
If your existing database already has data in the "{...}" format, then
eval it only the first time. Then you'll get the dict which you can
cache thruogh the use of dumps/loads.
Comment