Python编程:多处理



我有一个脚本。它是CPU密集型的,我可以使用多核机,但没有显示其利用率。如何使用Python 3中的多处理库?也许还有其他东西?欢迎任何建议修改脚本的建议。谢谢!

from nltk.corpus import wordnet as wn
from itertools import chain 
for line in infile:
  word = line.strip()
  if (word not in Dict):
      Dict[word]=(set(["-","-","-"]),0)
  lemma = lmtzr.lemmatize(word)
  for w, net1, net2, lch in syn(lemma):

      if (word not in Dict):
          Dict[word]={}
      for l in net2.lemmas():
          synonyms.append(l.name())

  Dict[word] = (set(synonyms),round(lch,2))

  synonyms =[]

infile.close()

csv_writer(Dict, "Text8_types_similar_lch.csv")

您可以使用Joblib。首先,将您的代码放入适用于任意数量的函数中。您可以将函数的结果写入CSV文件,从而为每个过程提供不同的文件,您必须合并,或者只是返回某些内容:

def my_func(lines):
    return_dict = {}
    for line in lines:
        # put your code here
    return return_dict

然后,写一个函数以将lines拆分为一些较小尺寸的块:

from itertools import islice
def grouper(n, iterable):
    it = iter(iterable)
    while True:
        chunk = tuple(islice(it, n))
       if not chunk:
           return
       yield chunk

最后,致电Joblib的Parallel将每个数据块传递给您的功能:

from joblib import Parallel, delayed
results = Parallel(n_jobs=num_cores)(
    delayed(my_func)(line_chunk) for line_chunk in grouper(lines, 500))

results将是my_func返回项目的列表,您可以将它们合并。

相关内容

  • 没有找到相关文章

最新更新