有效地处理一系列字符串



我有一系列我需要处理的字符串。由于可以独立处理字符串,因此我正在并行执行此操作:

import multiprocessing
import numpy as np
def func(x):
    ls = ["this", "is"]
    return [i.upper() for i in x.split(' ') if i not in ls]
arr = np.asarray(["this is a test", "this is not a test", "see my good example"])
pool = multiprocessing.Pool(processes=2)
tst = pool.map(func, arr)
pool.close()

我的问题是:有什么明显的方法可以改善我的代码,以减少记忆使用和CPU时间?例如

  • func中使用numpy-arrays?
  • 使用python lists代替numpy-arrays?
  • ...?

您可以使用numpy frompyfunc来矢量化整个执行。这比本机Python实现要快得多。

import numpy as np
import functools

def func(x):    
    ls = ["this", "is"]
    print( [i.upper() for i in x.split(',') if i not in ls])

x = np.array(["this is a test", "this is not a test", "see my good example"])
np.frompyfunc(func,1,1)(x)

相关内容

  • 没有找到相关文章

最新更新