Как ограничить количество процессоров, используемых Spacy? - PullRequest
0 голосов
/ 26 мая 2018

Как ограничить количество процессоров, используемых Spacy?

Я хочу выделить части речи и именованные объекты из большого набора предложений.Из-за ограничений, касающихся оперативной памяти, я сначала использую Python NLTK для разбора своих документов на предложения.Затем я перебираю предложения и использую nlp.pipe () для извлечения.Однако, когда я делаю это, Spacy поглощает весь мой компьютер;Spacy использует каждый доступный процессор.Такое не приятно, потому что мой компьютер является общим.Как я могу ограничить количество процессоров, используемых Spacy?Вот мой код на сегодняшний день:

# 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()

1 Ответ

0 голосов
/ 01 июня 2018

Мой ответ на мой собственный вопрос: «Позвоните в операционную систему и используйте утилиту Linux с именем taskset».

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

Это конкретное решение ограничивает работающий процесс ядрами № 1 и № 2.Это решение достаточно хорошо для меня.

...