我正在尝试使用 Python 中的
multiprocessing
模块来运行使用 Open3D 库处理点云的函数。但是,当我尝试在单独的进程中运行此函数时,它会挂起并且无法完成。
这是我的代码的简化版本:
import multiprocessing
import numpy as np
import open3d as o3d
def foo():
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2]]))
pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
print("normal", np.asarray(pcd.normals))
if __name__ == '__main__':
print("RUN foo")
foo()
print("RUN foo with multiprocessing")
p = multiprocessing.Process(target=foo)
p.start()
p.join()
当我运行代码时,函数 foo() 在直接调用时可以正确执行,但是当我尝试使用多处理运行它时,它在启动进程后挂起。
**Versions**:
- numpy==1.24.2
- open3d==0.18.0
- python==3.10.15
- ubuntu==20.04
我找不到任何解决方案,所以我来到这里。