Instantiating only one object of a Product in Zope 2.5.1

Terry Hancock hancock at anansispaceworks.com
Mon Jan 6 22:23:34 EST 2003


sameer wrote:
> I have a product that I wrote in zope which is just a big hash.  It
> loads in company names as keys, and from a text file, adds ticker
> items as each value for a particular key.  Now I only want this huge
> dictionary to load once, which is when zope starts up (possibly in a
> global space), as I need one copy of it and I need that one copy to
> update every x number of minutes.  Currently, I think, each user that
> views this product, loads his own copy of the hash, which makes it
> slow and a memory hog.  I only want a single copy available to all
> users, and the data refresh time to be determined by the system or the
> user.

As with most problems, there's more than one solution.  Given your problem, 
I would probably avoid using a dictionary and just put the information in a 
MySQL database. But there's overhead involved in setting that up, so you 
might not want to.

The key question is when and how often does the data in this dictionary 
change?

You might want to consider making this dictionary a global module variable, 
and accessing it from the product object, rather than storing it as an 
attribute of the object (which sounds like what you're doing now). Then you 
just make a method to retrieve this data instead of storing it directly.

If the data is being filled in from a file on the filesystem (not a zope 
object), and need not use Zope's persistence mechanism, this may be the 
right answer.

But it's hard to say without more details, and you'll probably get more 
specific information from the Zope mailing list, as has already been 
suggested.

Cheers,
Terry

-- 
Anansi Spaceworks
http://www.anansispaceworks.com




More information about the Python-list mailing list