On 01/21/2015 04:26 PM, Chris Angelico wrote: > On Thu, Jan 22, 2015 at 8:20 AM, Matthew Ruffalo <mm...@case.edu> wrote: >> Yes, length-unlimited strings are *extremely* useful in some >> applications. I remember bitterly cursing Java's string length limit of >> 2 ** 31 (maybe - 1) on multiple occasions. Python's strings seem to >> behave like integers in that their size is limited only by available memory. > Hmm, I don't know that you'll get much beyond 2**31 characters (even > all-ASCII characters in PEP 393) on a 32-bit Python, simply because > "available memory" is capped at 2**32 bytes minus other stuff. You'd > need a 64-bit Python to do that, and I would guess a 64-bit Java would > also raise the limit. > > ChrisA No, Java's String.length returns an int and Strings are limited to ~2 ** 31 characters even in 64-bit Java.
I do seem to have encountered some strange behavior, though: creating very large strings with str.__mul__ seems to enter an allocation loop in Python 3.4. With a single-character string 's', I can create the following new strings quickly: s * 2 ** 33 s * 2 ** 34 s * 2 ** 35 s * 2 ** 36 but s * 2 ** 38 shows some odd memory usage. I'm watching the memory usage of a Python process steadily increase to 256GB, drop to a few MB, climb back to 256GB, drop to a few MB, and so on. It takes a half-dozen cycles of allocation and deallocation before the interactive interpreter gives me another prompt. MMR... -- https://mail.python.org/mailman/listinfo/python-list