如何在Python中加速对父字符串的许多短子字符串的操作

如何在Python中加速对父字符串的许多短子字符串的操作,python,string,slice,Python,String,Slice,配置文件中显示了一个对父字符串的许多但很短的子字符串进行操作的循环,我希望通过避免复制来优化它。在运行实际操作之前,我确实需要对切片执行一些string操作,例如strip等 我浏览了内存视图的一部分,但似乎tobytes再次创建了一个副本。如果不调用memoryview切片上的tobytes,我想不出在切片上调用字符串操作的方法。是否有避免复制的纯Python方法 未优化的代码如下所示 # parent_str is about 4GB hash_list = [] for start,

配置文件中显示了一个对父字符串的许多但很短的子字符串进行操作的循环,我希望通过避免复制来优化它。在运行实际操作之前,我确实需要对切片执行一些
string
操作,例如
strip

我浏览了
内存视图的一部分,但似乎
tobytes
再次创建了一个副本。如果不调用memoryview切片上的
tobytes
,我想不出在切片上调用字符串操作的方法。是否有避免复制的纯Python方法

未优化的代码如下所示

 # parent_str is about 4GB
 hash_list = []
 for start,end in offset_list:
   segment = parent_str[start:end].strip().replace("%$@", "")
   hash_list.append(hash(segment))

您可以使用集合来存储子字符串,它将自动消除重复项

>>> string = "This is a string with duplicates with duplicates"
>>> substrings = set(string.split())
>>> substrings
{'This', 'duplicates', 'a', 'string', 'is', 'with'}
>>> substrings.add('hello')
>>> substrings.add('duplicates')
>>> substrings
{'This', 'duplicates', 'hello', 'a', 'string', 'is', 'with'}

你能展示一个小的代码示例来说明这个问题吗?@Chris_Rands刚刚做了,虽然这个示例是一个非常简单的示例,但是你可以确保python使用
sys.intern
重用单个字符串,这有帮助吗?我想问一下,为什么你要避免切片操作是一个副本?AFAIK任何字符串操作都会导致复制。那么,为什么要努力避免再次出现切片呢?如果
确实很短,那应该不会引起任何问题。@Chris_Rands Ah!很好的实习生电话。我不会有太多的重复,所以不确定它是否有用。我不认为重复数据消除是这里的问题。