flask 使用paddlenlp taskflow 报错 RuntimeError No root path can be found for the provided module mp_main

flask 使用paddlenlp taskflow 报错 RuntimeError :No root path can be found for the provided module “mp_main”

使用多进程来搭建taskflow抽取信息的时候报错。

在这里插入图片描述

翻译以下,所提供的"mp_main"模块中找不到根路径,这可能是因为该模块来自于一个没有提供文件名信息的引用,或者是一个命名空间包。在这种情况下,需要明确提供根路径。

看到这个报错,开始有点儿方,刚开始以为是

if __name__ == '__main__':

写错了,但检查了之后发现没有问题。跟新代码前,开多进程是没有问题的,加了一个taskflow的信息提取就出问题了,猜测是taskflow这个命名和flask里面的冲突了(但flask 官网搜了下并没有taskflow这个函数),也没有安装 taskflow这个包。

from paddlenlp import Taskflow
form paddlenlp import Taskflow as pdtf

改了依然报错。注释掉包含taskflow的进程,引用文件中包含对Taskflow的引用也会报错。

网上相关的信息基本没有,有一个plotly社区,关于dash with multiprocessing的问题,链接

报了同样的错误,然后大致看了下帖子。

提问者认为,是因为win中没有forking的问题,并找到了引起该问题所引用的两个scypi包,而除这两个包之外的其他scypi包则没问题。

有大佬回复说,这可能是win缺乏forking,在多进程的时候,创建新的进程需要重新引用父模块,但不使用main。(我对这方面也懂的很少,没咋明白这到底怎么回事)

我代码里面是直接创建多进程,并没有用进程池。

然后在paddlenlp github 的issues里面找到这个:链接

该问题是关于使用Taskflow 多进程卡死的,跟我这个好像也没啥关系,毕竟,我这个服务都启不起来。

paddle方回复,可以使用spawn的形式尝试,我没试这个。

另一个网友回复,把引用写在进程内部就可以解决。我试了下,这个确实可以。

但还有个问题,这个网友说,使用cpu的时候,使用多进程是没有问题的,只有使用gpu才有问题。而我用的就是cpu,依然有这个问题。

在这里插入图片描述

可能和cpu,gpu没太大关系,只是和多进程有关。参考链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值