You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(33) |
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(7) |
Feb
(44) |
Mar
(51) |
Apr
(43) |
May
(43) |
Jun
(36) |
Jul
(61) |
Aug
(44) |
Sep
(25) |
Oct
(82) |
Nov
(97) |
Dec
(47) |
2005 |
Jan
(77) |
Feb
(143) |
Mar
(42) |
Apr
(31) |
May
(93) |
Jun
(93) |
Jul
(35) |
Aug
(78) |
Sep
(56) |
Oct
(44) |
Nov
(72) |
Dec
(75) |
2006 |
Jan
(116) |
Feb
(99) |
Mar
(181) |
Apr
(171) |
May
(112) |
Jun
(86) |
Jul
(91) |
Aug
(111) |
Sep
(77) |
Oct
(72) |
Nov
(57) |
Dec
(51) |
2007 |
Jan
(64) |
Feb
(116) |
Mar
(70) |
Apr
(74) |
May
(53) |
Jun
(40) |
Jul
(519) |
Aug
(151) |
Sep
(132) |
Oct
(74) |
Nov
(282) |
Dec
(190) |
2008 |
Jan
(141) |
Feb
(67) |
Mar
(69) |
Apr
(96) |
May
(227) |
Jun
(404) |
Jul
(399) |
Aug
(96) |
Sep
(120) |
Oct
(205) |
Nov
(126) |
Dec
(261) |
2009 |
Jan
(136) |
Feb
(136) |
Mar
(119) |
Apr
(124) |
May
(155) |
Jun
(98) |
Jul
(136) |
Aug
(292) |
Sep
(174) |
Oct
(126) |
Nov
(126) |
Dec
(79) |
2010 |
Jan
(109) |
Feb
(83) |
Mar
(139) |
Apr
(91) |
May
(79) |
Jun
(164) |
Jul
(184) |
Aug
(146) |
Sep
(163) |
Oct
(128) |
Nov
(70) |
Dec
(73) |
2011 |
Jan
(235) |
Feb
(165) |
Mar
(147) |
Apr
(86) |
May
(74) |
Jun
(118) |
Jul
(65) |
Aug
(75) |
Sep
(162) |
Oct
(94) |
Nov
(48) |
Dec
(44) |
2012 |
Jan
(49) |
Feb
(40) |
Mar
(88) |
Apr
(35) |
May
(52) |
Jun
(69) |
Jul
(90) |
Aug
(123) |
Sep
(112) |
Oct
(120) |
Nov
(105) |
Dec
(116) |
2013 |
Jan
(76) |
Feb
(26) |
Mar
(78) |
Apr
(43) |
May
(61) |
Jun
(53) |
Jul
(147) |
Aug
(85) |
Sep
(83) |
Oct
(122) |
Nov
(18) |
Dec
(27) |
2014 |
Jan
(58) |
Feb
(25) |
Mar
(49) |
Apr
(17) |
May
(29) |
Jun
(39) |
Jul
(53) |
Aug
(52) |
Sep
(35) |
Oct
(47) |
Nov
(110) |
Dec
(27) |
2015 |
Jan
(50) |
Feb
(93) |
Mar
(96) |
Apr
(30) |
May
(55) |
Jun
(83) |
Jul
(44) |
Aug
(8) |
Sep
(5) |
Oct
|
Nov
(1) |
Dec
(1) |
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(1) |
Oct
(3) |
Nov
|
Dec
|
2017 |
Jan
|
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
(7) |
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1
|
2
|
3
(1) |
4
(6) |
5
(14) |
6
(18) |
7
(2) |
8
(1) |
9
(6) |
10
(6) |
11
(1) |
12
(4) |
13
|
14
|
15
|
16
|
17
|
18
(9) |
19
|
20
(4) |
21
(1) |
22
|
23
(1) |
24
|
25
|
26
|
27
|
28
|
29
|
30
|
|
|
|
|
|
There have been some complaints about leaking FT2Font objects: it seems that if you make too many plots, mpl crashes because it has opened the same font files too many times. I think this is a symptom of the same GUI memory leaks that have been discussed earlier. Inspired by http://www.python.org/~jeremy/weblog/030410.html, I wrote a script that lists what kind of objects are leaking. You need a debugging build of Python to use it, and have to compile all extensions for the debugging build. To call the script, give the backend on the command line, as in "python whatsleaking.py Agg". Here is the output for Agg: --- 0 --- 1 {<type 'str'>: 1, <type 'dict'>: 1, <type 'int'>: 24} --- 2 {<type 'dict'>: 1, <type 'int'>: 24} --- 3 {} --- 4 {} --- 5 {} --- 6 {} --- 7 {} --- 8 {} --- 9 {} On round 0 there is never any output, but the script memorizes how many objects of each type exist. On round 1 there is one more string, one more dict, and 24 more ints. On round 2, in addition to these, there is one more dict and 24 more ints. Thereafter the numbers stay constant so there is no output. (There is also some code for chasing references to FT2Font objects, but it's commented out.) So pure Agg is not leaking. The output for TkAgg is different: --- 0 --- 1 {<type 'set'>: 3, <type 'cell'>: 1, <type 'builtin_function_or_method'>: 12, <type 'Point'>: 216, <type 'numpy.ndarray'>: 416, <type 'instancemethod'>: 4, <type 'Affine'>: 75, <type 'Bbox'>: 108, <type 'Interval'>: 16, <type 'tuple'>: 208, <type 'numpy.float64'>: 12, <type 'list'>: 112, <type 'function'>: 1, <type 'str'>: 253, <type 'dict'>: 395, <class 'matplotlib.cbook.maxdict'>: 34, <type 'BinOp'>: 331, <type 'int'>: 38, <type 'instance'>: 204, <type 'RendererAgg'>: 1, <type 'float'>: 192, <type 'tkapp'>: 1, <type 'Func'>: 10} --- 2 {<type 'Func'>: 10, <type 'cell'>: 1, <type 'builtin_function_or_method'>: 12, <type 'Point'>: 216, <type 'numpy.ndarray'>: 416, <type 'instancemethod'>: 4, <type 'Affine'>: 75, <type 'Bbox'>: 108, <type 'set'>: 3, <type 'Interval'>: 16, <type 'tuple'>: 208, <type 'numpy.float64'>: 12, <type 'list'>: 112, <type 'dict'>: 395, <type 'str'>: 253, <class 'matplotlib.cbook.maxdict'>: 34, <type 'BinOp'>: 331, <type 'int'>: 39, <type 'RendererAgg'>: 1, <type 'function'>: 1, <type 'instance'>: 204, <type 'float'>: 192, <type 'tkapp'>: 1} --- 3 {<type 'Func'>: 10, <type 'cell'>: 1, <type 'builtin_function_or_method'>: 12, <type 'Point'>: 216, <type 'numpy.ndarray'>: 416, <type 'instancemethod'>: 4, <type 'Affine'>: 75, <type 'Bbox'>: 108, <type 'set'>: 3, <type 'Interval'>: 16, <type 'tuple'>: 208, <type 'numpy.float64'>: 12, <type 'list'>: 112, <type 'dict'>: 394, <type 'str'>: 253, <class 'matplotlib.cbook.maxdict'>: 34, <type 'BinOp'>: 331, <type 'int'>: 15, <type 'RendererAgg'>: 1, <type 'function'>: 1, <type 'instance'>: 204, <type 'float'>: 192, <type 'tkapp'>: 1} --- 4 {<type 'Func'>: 10, <type 'cell'>: 1, <type 'builtin_function_or_method'>: 12, <type 'Point'>: 216, <type 'numpy.ndarray'>: 416, <type 'instancemethod'>: 4, <type 'Affine'>: 75, <type 'Bbox'>: 108, <type 'set'>: 3, <type 'Interval'>: 16, <type 'tuple'>: 208, <type 'numpy.float64'>: 12, <type 'list'>: 112, <type 'dict'>: 394, <type 'str'>: 253, <class 'matplotlib.cbook.maxdict'>: 34, <type 'BinOp'>: 331, <type 'int'>: 14, <type 'RendererAgg'>: 1, <type 'function'>: 1, <type 'instance'>: 204, <type 'float'>: 192, <type 'tkapp'>: 1} --- 5 {<type 'Func'>: 10, <type 'cell'>: 1, <type 'builtin_function_or_method'>: 12, <type 'Point'>: 216, <type 'numpy.ndarray'>: 416, <type 'instancemethod'>: 4, <type 'Affine'>: 75, <type 'Bbox'>: 108, <type 'set'>: 3, <type 'Interval'>: 16, <type 'tuple'>: 208, <type 'numpy.float64'>: 12, <type 'list'>: 112, <type 'dict'>: 394, <type 'str'>: 253, <class 'matplotlib.cbook.maxdict'>: 34, <type 'BinOp'>: 331, <type 'int'>: 13, <type 'RendererAgg'>: 1, <type 'function'>: 1, <type 'instance'>: 204, <type 'float'>: 192, <type 'tkapp'>: 1} --- 6 {<type 'Func'>: 10, <type 'cell'>: 1, <type 'builtin_function_or_method'>: 12, <type 'Point'>: 216, <type 'numpy.ndarray'>: 416, <type 'instancemethod'>: 4, <type 'Affine'>: 75, <type 'Bbox'>: 108, <type 'set'>: 3, <type 'Interval'>: 16, <type 'tuple'>: 208, <type 'numpy.float64'>: 12, <type 'list'>: 112, <type 'dict'>: 394, <type 'str'>: 253, <class 'matplotlib.cbook.maxdict'>: 34, <type 'BinOp'>: 331, <type 'int'>: 13, <type 'RendererAgg'>: 1, <type 'function'>: 1, <type 'instance'>: 204, <type 'float'>: 192, <type 'tkapp'>: 1} --- 7 {<type 'Func'>: 10, <type 'cell'>: 1, <type 'builtin_function_or_method'>: 12, <type 'Point'>: 216, <type 'numpy.ndarray'>: 416, <type 'instancemethod'>: 4, <type 'Affine'>: 75, <type 'Bbox'>: 108, <type 'set'>: 3, <type 'Interval'>: 16, <type 'tuple'>: 208, <type 'numpy.float64'>: 12, <type 'list'>: 112, <type 'dict'>: 394, <type 'str'>: 253, <class 'matplotlib.cbook.maxdict'>: 34, <type 'BinOp'>: 331, <type 'int'>: 14, <type 'RendererAgg'>: 1, <type 'function'>: 1, <type 'instance'>: 204, <type 'float'>: 192, <type 'tkapp'>: 1} --- 8 {<type 'Func'>: 10, <type 'cell'>: 1, <type 'builtin_function_or_method'>: 12, <type 'Point'>: 216, <type 'numpy.ndarray'>: 416, <type 'instancemethod'>: 4, <type 'Affine'>: 75, <type 'Bbox'>: 108, <type 'set'>: 3, <type 'Interval'>: 16, <type 'tuple'>: 208, <type 'numpy.float64'>: 12, <type 'list'>: 112, <type 'dict'>: 394, <type 'str'>: 253, <class 'matplotlib.cbook.maxdict'>: 34, <type 'BinOp'>: 331, <type 'int'>: 14, <type 'RendererAgg'>: 1, <type 'function'>: 1, <type 'instance'>: 204, <type 'float'>: 192, <type 'tkapp'>: 1} --- 9 {<type 'Func'>: 10, <type 'cell'>: 1, <type 'builtin_function_or_method'>: 12, <type 'Point'>: 216, <type 'numpy.ndarray'>: 416, <type 'instancemethod'>: 4, <type 'Affine'>: 75, <type 'Bbox'>: 108, <type 'set'>: 3, <type 'Interval'>: 16, <type 'tuple'>: 208, <type 'numpy.float64'>: 12, <type 'list'>: 112, <type 'dict'>: 394, <type 'str'>: 253, <class 'matplotlib.cbook.maxdict'>: 34, <type 'BinOp'>: 331, <type 'int'>: 14, <type 'RendererAgg'>: 1, <type 'function'>: 1, <type 'instance'>: 204, <type 'float'>: 192, <type 'tkapp'>: 1} I'm not a GUI person, but it seems suspicious to me that a tkapp is created on every round. Maybe that's a useful clue? -- Jouni K. Seppänen http://www.iki.fi/jks