On 2016-02-12 00:31, Paulo da Silva wrote:
Hi!
What is the best (shortest memory usage) way to store lots of pathnames
in memory where:
1. Path names are pathname=(dirname,filename)
2. There many different dirnames but much less than pathnames
3. dirnames have in general many chars
The idea is to share the common dirnames.
More realistically not only the pathnames are stored but objects each
object being a MyFile containing
self.name - <base name>
getPathname(self) - <full pathname>
other stuff
class MyFile:
__allfiles=[]
def __init__(self,dirname,filename):
self.dirname=dirname # But I want to share this with other files
self.name=filename
MyFile.__allfiles.append(self)
...
def getPathname(self):
return os.path.join(self.dirname,self.name)
...
Apart from all of the other answers that have been given:
>>> p1 = 'foo/bar'
>>> p2 = 'foo/bar'
>>> id(p1), id(p2)
(982008930176, 982008930120)
>>> d = {}
>>> id(d.setdefault(p1, p1))
982008930176
>>> id(d.setdefault(p2, p2))
982008930176
The dict maps equal strings (dirnames) to the same string, so you won't
have multiple copies.
--
https://mail.python.org/mailman/listinfo/python-list