函数不在多进程中返回,没有错误
Function not returning in multiprocess, no errors
我 运行 多个进程与 Pool
import spacy
import multiprocessing
import logging
# global variable
nlp_bert = spacy.load("en_trf_bertbaseuncased_lg")
logging.basicConfig(level=logging.DEBUG)
def job_pool(data, job_number, job_to_do, groupby=None, split_col=None, **kwargs):
pool = multiprocessing.Pool(processes=job_number)
jobs = pool.map(job_to_do, data)
return jobs
def job(slice):
logging.debug('this shows')
w1 = nlp_bert('word')
w2 = nlp_bert('other')
logging.debug(w1.similarity(w2))
logging.debug("this doesn't")
job_pool([1, 2, 3, 4], 4, job)
nlp_bert函数没有return任何东西,也没有错误。我怎样才能找出问题所在?我已经将日志记录设置为调试级别。
该函数在多进程之外工作 - 即只需将其写入脚本和 运行 以下内容。
import spacy
nlp_bert = spacy.load("en_trf_bertbaseuncased_lg")
w1 = nlp_bert('word')
w2 = nlp_bert('other')
print(w1.similarity(w2))
0.8381155446247196
我正在使用:
- Python 3.8.2
- 空间版本:2.3.2
事实证明这是 pytorch 的一个已知问题 运行 子进程中的多线程,导致死锁。
https://github.com/explosion/spaCy/issues/4667
解决方法是添加以下内容:
import torch
torch.set_num_threads(1)
我 运行 多个进程与 Pool
import spacy
import multiprocessing
import logging
# global variable
nlp_bert = spacy.load("en_trf_bertbaseuncased_lg")
logging.basicConfig(level=logging.DEBUG)
def job_pool(data, job_number, job_to_do, groupby=None, split_col=None, **kwargs):
pool = multiprocessing.Pool(processes=job_number)
jobs = pool.map(job_to_do, data)
return jobs
def job(slice):
logging.debug('this shows')
w1 = nlp_bert('word')
w2 = nlp_bert('other')
logging.debug(w1.similarity(w2))
logging.debug("this doesn't")
job_pool([1, 2, 3, 4], 4, job)
nlp_bert函数没有return任何东西,也没有错误。我怎样才能找出问题所在?我已经将日志记录设置为调试级别。
该函数在多进程之外工作 - 即只需将其写入脚本和 运行 以下内容。
import spacy
nlp_bert = spacy.load("en_trf_bertbaseuncased_lg")
w1 = nlp_bert('word')
w2 = nlp_bert('other')
print(w1.similarity(w2))
0.8381155446247196
我正在使用:
- Python 3.8.2
- 空间版本:2.3.2
事实证明这是 pytorch 的一个已知问题 运行 子进程中的多线程,导致死锁。
https://github.com/explosion/spaCy/issues/4667
解决方法是添加以下内容:
import torch
torch.set_num_threads(1)