PaddleOCR icon indicating copy to clipboard operation
PaddleOCR copied to clipboard

当使用Python多进程multiprocessing时,抛ERROR ModuleNotFoundError: No module named 'paddleocr.ppstructure'

Open hermitgreen opened this issue 2 years ago • 3 comments

请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem

  • 系统环境/System Environment:

CentOS 7.9

  • 版本号/Version:Paddle: PaddleOCR: 问题相关组件/Related components:

Paddle 2.2.2 PaddleOCR 2.6.1.0 Python 3.8.15

原有实现中,同名Module(paddleocr)下使用同名的Python主入口脚本(paddleocr.py),使用spawn多进程,在Python3.8触发ModuleNotFoundError的bug,该bug在测试环境可以稳定复现

CASE代码:

from paddleocr.ppstructure.predict_system import StructureSystem
import multiprocessing

def func(
    pid,
):
    print(f"[{pid}] Start")
    [_ for _ in range(int(1e6))]
    print(f"[{pid}] Finished")


if __name__ == '__main__':
    with multiprocessing.Manager() as manager:
        procs = []
        for i in range(2):
            p = multiprocessing.get_context("spawn").Process(
                target=func,
                args=(f"pid_{i}",)
            )
            p.start()
            procs.append(p)

        for p in procs:
            p.join()

修复参考: https://github.com/PaddlePaddle/PaddleOCR/pull/8004

修复前: image

修复后: image

hermitgreen avatar Nov 15 '22 03:11 hermitgreen

PR冲突了,已reset https://github.com/PaddlePaddle/PaddleOCR/pull/8324

hermitgreen avatar Nov 15 '22 03:11 hermitgreen

命名为paddleocr.py,生成whl包,修复前的错误通过修改执行目录试试呢

an1018 avatar Nov 15 '22 11:11 an1018

命名为paddleocr.py,生成whl包,修复前的错误通过修改执行目录试试呢

修改执行目录是指?

hermitgreen avatar Nov 15 '22 12:11 hermitgreen

目前不推荐使用这种import方式,推荐使用 from paddleocr import PPStructure

andyjiang1116 avatar Jan 06 '23 09:01 andyjiang1116

目前不推荐使用这种import方式,推荐使用 from paddleocr import PPStructure

目前想单独使用StructureSystem的能力,而不对其进行前后处理的包装,使用PPStructure有一些postprocess逻辑是不太好满足的。

hermitgreen avatar Jan 09 '23 08:01 hermitgreen

PPStructure目前主推全流程(包含前后处理),你这个需求可以自己改代码来实现,可以直接将StructureSystem这个类单独处理,可参考python推理代码进行自定义处理 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/ppstructure/predict_system.py#L42

andyjiang1116 avatar Jan 09 '23 08:01 andyjiang1116