On 1/16/2015 2:43 AM, Kapil Dolas wrote:
I am using pywin32's mapi module to read data from PSTs. I have shared my program which reads email and attachment datahere <http://pastebin.com/2AXy3BVH> (http://pastebin.com/2AXy3BVH). Currently, program is not storing any of the read data. But, still I can see gradual increase in memory usage when I run the program over large PST. That PST contains around 9000 emails and it has 9 GB of data. Max size of email is 24 MB only. For this PST, program's initial memory usage is about 10 MB, but it gradually increases and reaches to 40-45 MB. I don't know why this memory usage increases up to this value. I have tried using pympler to find the root cause, but without any success. It appears that memory increase is not due to python objects. Can you point out the reason behind (gradual) increase in memory usage? Is it due to the memory leak in pywin32, or any mistakes in my program?
You can try these changes and see if it helps mitigate some of the bloat your are experiencing in the script you linked:
1. Only call MAPIInitialize() once on the main thread before you do any other mapi calls. Then call MAPIUninitialize() before exiting the process. It's been documented that the outlook mapi dll intentionally leaked the heap as a workaround in previous versions. If you are creating/destroying multiple instances of MAPIReadTest(), that may be contributing to some of the bloat you are seeing.
2. Instead of walking the folder hierarchy and opening/caching multiple folder entries, you can also try using GetHierarchyTable(mapi.CONVENIENT_DEPTH) instead to get the entry id's and process them in sequence.
hth, -nick _______________________________________________ python-win32 mailing list python-win32@python.org https://mail.python.org/mailman/listinfo/python-win32