[Andrew Kuchling] > [CC'ed to python-dev, Barbara Mattson] > > Barbara's encountered an apparent problem with test_longexp in Python > 2.2 on MacOS X. test_longexp creates a big list expression and > eval()'s it. The problem is that it takes an exceedingly long time to > run, at least more than half an hour (at which point she interrupted > it). > > The two curious things are that 1) while test_longexp requires a lot > of memory and often thrashes on a low-memory machine (I found there > are 2 or 3 bugs in the SF bugtracker to this effect), the MacOS box in > question has a gigabyte of RAM, and 2) Python 2.1.1 *doesn't* show the > problem. The test takes about 2 seconds on my box (Win98SE, 256MB, 866MHz), in 2.2 or 2.1.1, and I don't know of any Mac-specific code that might get touched here except for the C library. So Skip's suggestion to try pymalloc is a good one -- although it's hard to see in advance why that would make a difference in this specific case. > Quoting from her report: > > I tried the test_longexp by hand: > > REPS = XXX > l = eval("[" + "2," * REPS + "]") > print len(l) Break it into smaller steps so we can narrow down possible causes: REPS = 50000 print "building list guts" guts = "2," * REPS print "building input string" input = "[" + guts + "]" print "compiling the input string" code = compile(input, "<input string>", "eval") print "executing" thelist = eval(code) print len(thelist) When REPS is large, what's the last thing that gets printed before the huge delay starts?
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4