What is the max length of a Python string?
With a 64-bit Python installation, and (say) 64 GB of memory, a Python string of around 63 GB should be quite feasible, if not maximally fast. If you can upgrade your memory beyond 64 GB, your maximum feasible strings should get proportionally longer. (I don't recommend relying on virtual memory to extend that by much, or your runtimes will get simply ridiculous;-).
With a typical 32-bit Python installation, the total memory you can use in your application is limited to something like 2 or 3 GB (depending on OS and configuration), so the longest strings you can use will be much smaller than in 64-bit installations with high amounts of RAM.
How to work around Python 3 maximum string size?
Resolution: turns out to be the
data segment size limit
$ ulimit -d
4194304
For some reason, these 4294967296 B translate to a 2684354560 B per-allocationcap in Python.
Setting this value to unlimited removes the cap. This can be done externally
by the parent process (e. g. ulimit -d unlimited
from the shell) or
in Python itself using the
wrapper library for resource.h
:
resource.setrlimit (resource.RLIMIT_DATA,
(resource.RLIM_INFINITY
,resource.RLIM_INFINITY))
Apparently on morerecent kernels (4.7 and later)
RLIMIT_DATA
affects anonymous mappings too whichexplains both the observed failure of large-ish allocations and my being
surprised.
Get max length of value inside a list which contains other lists
You could recursively search for all values
in your data structure:
data = [{
"name": "title",
"value": "titel{TM} D3",
"is_on_label": 1
},
[{
"name": "title",
"value": "titel{TM} D3",
"is_on_label": 1,
"sub_options": [
{
"value": "30V max 3A",
"id_configuration_v": "1668"
},
{
"value": "none none none none",
"id_configuration_v": "1696"
}
]
}],
{
"name": "DK in",
"value": "24V max 2.5A",
"is_on_label": 1,
"id_configuration": 79,
"options": [{
"value": "30V max 3A",
"id_configuration_v": "1668"
},
{
"value": "none",
"id_configuration_v": "1696"
}
]
}
]
def recur(data, count):
if isinstance(data, list):
for item in data:
count = recur(item, count)
elif isinstance(data, dict):
for k, v in data.items():
if k == 'value':
count.append(len(v))
else:
count = recur(v, count)
return count
result = recur(data, [])
print(max(result))
Out:19
How to find maximum length of a given character in series from substring in python?
You may try this:
s = "..xxx..x.x.xxxxx.xx"
start = 0
maxcount = 0
for i in range(len(s)):
# Using != "x" can work for strings which include other characters besides "."
if s[i] != "x":
# reset the start position
start = i
continue
# update the result only if it is larger than current result
if i - start > maxcount:
maxcount = i - start
print(maxcount) # Output: 5
Python truncate a long string
info = (data[:75] + '..') if len(data) > 75 else data
Related Topics
Pandas Expand Rows from List Data Available in Column
Logisticregression: Unknown Label Type: 'Continuous' Using Sklearn in Python
Pandas Dataframe Aggregate Function Using Multiple Columns
How to Print a Dictionary Line by Line in Python
Using Only the Db Part of Django
Pandas Latitude-Longitude to Distance Between Successive Rows
Python Wildcard Search in String
When Should an Attribute Be Private and Made a Read-Only Property
How to Check Task Status in Celery
In-Place Type Conversion of a Numpy Array
How to Release Memory After Creating Matplotlib Figures
How to Read a File Line-By-Line in Python
In Python, What Happens When You Import Inside of a Function
How to Save and Restore Multiple Variables in Python
How to Restrict Foreign Keys Choices to Related Objects Only in Django