如何限制Spacy使用的CPU数量?

我想从一大堆句子中提取词性和命名实体。由于RAM方面的限制,我首先使用Python NLTK将文档解析为句子。然后,我遍历句子并使用nlp.pipe()进行提取。但是,当我这样做时,Spacy占用了我的整个计算机; Spacy使用每个可用的CPU。这样不好,因为我的计算机是共享的。如何限制Spacy使用的CPU数量?这是我到目前为止的代码:

# require
from nltk import *
import spacy

# initialize
file = './walden.txt'
nlp  = spacy.load( 'en' )

# slurp up the given file
handle = open( file, 'r' )
text   = handle.read()

# parse the text into sentences, and process each one
sentences = sent_tokenize( text )
for sentence in nlp.pipe( sentences, n_threads=1 ) :

  # process each token
  for token in sentence : print( "\t".join( [ token.text, token.lemma_, token.tag_ ] ) )

# done
quit()

最佳答案

我对自己的问题的回答是:“调用操作系统,并使用一个名为taskset的Linux实用程序。”

# limit ourselves is a few processors only
os.system( "taskset -pc 0-1 %d > /dev/null" % os.getpid() )

此特定解决方案将运行进程限制为内核#1和#2。这个解决方案对我来说已经足够了。

关于spacy - 如何限制Spacy使用的CPU数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50537146/

10-13 04:48