Alan Morgan wrote: > slogging_away wrote: > >>Hi - I'm running Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 >>32 bit (Intel)] on win32, and have a script that makes numerous checks >>on text files, (configuration files), so discrepancies can be reported. >>The script works fine but it appears that I may have hit a wall with >>'if' statements. >> >>Due to the number of checks perfromed by the script on the text files, >>(over 500), there are quite a few 'if' statements in the script, (over >>1150). It seems that it is at the point that when I add any additional >>'if' statements the script will not run. No error is produced - it >>just returns to the python prompt much the same as when a successful >>'Check Module' command is selected. If I delete some other 'if' >>statements the new ones work so it appears that it has hit a limit on >>the number of 'if' statements. This has stunted any further checks for >>the script to make on the text files. >> >>Hs anyone ever run into this sort of thing? > > > I generated files with 10000, 25000, and 50000 simple if statements and ran > them. 10000 was okay, 25000 gave a bizarre internal error, and 50000 > segfaulted > and died. My system has plenty of memory and it isn't obvious to me why > python > should be so bothered about this. I'm not sure why I can have 10x the number > of > if statements that cause you trouble. There might be some overall limitation > on the number of statements in a file.
I made a script with 100,000 if's, (code below) and it appears to work on a couple systems, including Python 2.4.2 on Win32-XP. So at first cut, it doesn't seem to be just the if-count that triggers the bug. Code that does *not* demo the error on my systems: #! /usr/bin/env python lines = ["""#! /usr/bin/env python import random c = 0 n = random.randrange(10L**10) """] for i in range(100000): lines.append('if n % random.randrange(2, 1000) == 0: c += 1') lines.append('print c') lines.append('##############') progtext = '\n'.join(lines) f = file('manyifs.py', 'w') f.write(progtext) f.close() exec progtext -- --Bryan -- http://mail.python.org/mailman/listinfo/python-list