Thank you. I have tried both del() and setting the value to None. Neither worked. On May 6, 2013 6:25 AM, <python-win32-requ...@python.org> wrote:
> Send python-win32 mailing list submissions to > python-win32@python.org > > To subscribe or unsubscribe via the World Wide Web, visit > http://mail.python.org/mailman/listinfo/python-win32 > or, via email, send a message with subject or body 'help' to > python-win32-requ...@python.org > > You can reach the person managing the list at > python-win32-ow...@python.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of python-win32 digest..." > > > Today's Topics: > > 1. Re: Memory Leak in Threaded COM Object [SEC=UNOFFICIAL] > (Andrew MacIntyre) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Mon, 6 May 2013 01:01:24 +0000 > From: "Andrew MacIntyre" <andrew.macint...@acma.gov.au> > To: "python-win32@python.org" <python-win32@python.org> > Subject: Re: [python-win32] Memory Leak in Threaded COM Object > [SEC=UNOFFICIAL] > Message-ID: > > <a1e4e9d08d14924498e135fb4441ee8d92f9b...@act01exmbx01vp.internal.govt> > > Content-Type: text/plain; charset="us-ascii" > > Stab in the dark: after calling the Clear() method on object "tom" in > method CreateTom, use "del tom" or "tom = None" to try and lose any remnant > COM references before pythoncom.CoUninitialize() is called. > > -------------------------> "These thoughts are mine alone!" <--------- > Andrew MacIntyre Operations Branch > tel: +61 2 6219 5356 Communications Infrastructure Division > fax: +61 2 6253 3277 Australian Communications & Media Authority > email: andrew.macint...@acma.gov.au<mailto:andrew.macint...@acma.gov.au> > http://www.acma.gov.au/ > > From: python-win32 [mailto:python-win32-bounces+andrew.macintyre= > acma.gov...@python.org] On Behalf Of Michael Watson > Sent: Saturday, 4 May 2013 8:05 AM > To: python-win32@python.org > Subject: [python-win32] Memory Leak in Threaded COM Object > > > I am creating a COM client within a thread and performing several > operations with this client. Each thread is spawned from a server that uses > Python's socketserver module which has built-in threading support. > > When I am loading and using this COM object there is an expected spike in > memory usage by python.exe. With 10 concurrent threads there is a peak in > memory usage of about 500Mb. However when the operations are finished and > the COM object is apparently released, there are 50Mb of additional memory > used by the process than before. If I then spawn 10 additional threads > using the same server there are 13Mb additional used by python.exe after > those COM objects are closed. Eventually every 10 additional concurrent > threads adds approximately 6Mb after they are done. When I end the entire > python.exe process, all the memory is released. > > I have simplified the following code to mimic how the socketserver uses > threadding and the problem is the exact same. > > import win32com.client > > import threading > > import pythoncom > > > > def CreateTom(): > > pythoncom.CoInitialize() > > tom = win32com.client.Dispatch("TOM.Document") > > tom.Dataset.Load("FileName") > > tom.Clear() > > pythoncom.CoUninitialize() > > > > for i in range(50): > > t = threading.Thread(target = CreateTom) > > t.daemon = False > > t.start() > > I understand that I will unlikely get any support here around the specific > COM library (it is an IBM product used in Market Research known as the > TablesObjectModel). However I want to know if there is anything, ANYTHING, > additional that I can do to release this memory. I have read about > Apartments in COM but it sounds like pythoncom.CoInitialize should take > care of this for me. Any help would be appreciated. > > NOTICE: This email message is for the sole use of the intended recipient(s) > and may contain confidential and privileged information. Any unauthorized > review, use, disclosure or distribution is prohibited. If you are not the > intended recipient, please contact the sender by reply email and destroy > all > copies of the original message. > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://mail.python.org/pipermail/python-win32/attachments/20130506/219c365e/attachment-0001.html > > > > ------------------------------ > > Subject: Digest Footer > > _______________________________________________ > python-win32 mailing list > python-win32@python.org > http://mail.python.org/mailman/listinfo/python-win32 > > > ------------------------------ > > End of python-win32 Digest, Vol 122, Issue 5 > ******************************************** >
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32