Python 贝特;多处理

Python 贝特;多处理,python,docker,concurrency,multiprocessing,multicore,Python,Docker,Concurrency,Multiprocessing,Multicore,我一直在尝试多进程生成 已尝试按以下方式编写代码,但未能启动 bert\u命令='bert服务启动-模型目录未设置\u L-12\u H-768\u A-12-数量\u工作者40' process=subprocess.Popen(bert_command.split(),stdout=subprocess.PIPE) 从bert_service.client导入BertClient 然后使用 import concurrent.futures 多进程嵌入生成 def嵌入dic(文件列表):

我一直在尝试多进程生成

已尝试按以下方式编写代码,但未能启动

bert\u命令='bert服务启动-模型目录未设置\u L-12\u H-768\u A-12-数量\u工作者40'
process=subprocess.Popen(bert_command.split(),stdout=subprocess.PIPE)
从bert_service.client导入BertClient
然后使用

import concurrent.futures
多进程嵌入生成

def嵌入dic(文件列表):
dic={}
以concurrent.futures.ProcessPoolExecutor(max_workers=20)作为执行器:
对于zip中的文件e(文件列表,executor.map(嵌入文件,文件列表)):
dic[file]=e
返回dic
def嵌入_文件(文件):
文件\对象=打开(形式\路径+文件'r')
file_read=file_obj.readlines()
文件_obj.close()
file_read=[i.rstrip()表示文件中的i_read,如果不是(bool(不是i或i.isspace())]
文件读取=['| | |'。加入(文件读取)]
bc=BertClient(检查长度=False)
尝试:
嵌入=bc.encode(文件读取)
除值错误外:
嵌入=无
返回嵌入
但是,流量被卡在了

embedding=bc.encode(文件读取)
非常感谢您的帮助

关于机器配置:

系统信息

  • 德比安
  • TensorFlow版本:1.13
  • Python版本:3.6
  • bert-as-service
    版本:1.8.9
  • CPU型号和内存:48核Docker机器和60 GB内存

什么是“陷入困境”?是否有错误消息,或者它只是无限期地挂起?据猜测,您的BET服务进程在尝试将输出写入stdout时被卡住了,如果您正在捕获它(即通过
stdout=subprocess.PIPE
),那么您需要对它做些什么通常您最好使用shell脚本使系统进入正确的状态(即运行
bert服务启动
)让你的Python代码假设这是可以的。当它不在后台运行大型程序时,调试代码会容易得多,而且在开发过程中,你也可以手动完成这项工作并更好地控制它things@olooney是的,毫无疑问!sammason建议我通过控制台运行了Bert服务器。
bash Bert serving-start-model_dir/home/jovyan/work/BERT/uncased_L-12_H-768_A-12-num_worker 4
以下是输出[在此处输入图像描述][1][1]: