from __future__ import annotations import re # adapted from https://stackoverflow.com/a/9770397 import uuid def isplit(s, sep=None, maxsplit=-1): if maxsplit == 0: yield s else: sep_esc = re.escape(sep) if sep else r'\s+' regex = fr'(?:^|{sep_esc})((?:(?!{sep_esc}).)*)' for n, p in enumerate(re.finditer(regex, s)): if 0 <= maxsplit <= n: yield p.string[p.start(1):] return yield p.group(1) @profile def generate_string(): n = 100000 long_string = " ".join([uuid.uuid4().hex.upper() for _ in range(n)]) print(len(long_string)) z = isplit(long_string) for line in z: continue for line in long_string.split(): continue if __name__ == '__main__': generate_string()