0

我正在使用 Python 的 IfcOpenShell 模块解析 IFC 文件(大小为 1 GB),以获取我将在图形数据库中插入的所有节点、关系和属性。

对于快速 IFC 文件解析,我在 python 中使用多处理。在使用多个进程时(在我的情况下为 8 个,因为我的 CPU 是 8 个内核)我将 IFC 文件数据划分为 8 个列表,然后启动 8 个进程并创建节点和边以用于图形数据库插入

以下是我在使用多处理时面临的问题:

  1. 我需要打开文件以在每个进程中读取,因为我们通过使用“ifcopenshell.open()”方法打开文件获得的文件对象是不可腌制的,因此不能作为参数传递给“multiprocessing.Process()”。
  2. 如果我尝试腌制文件对象,我会得到“无法腌制'SwigPyObject'对象”异常。
  3. 由于我需要打开文件以在每个进程中读取它正在消耗我机器的完整 RAM(32 GB)并导致 VS-Code 编辑器崩溃。

我也尝试过在单线程中运行它,但这需要大量时间。我曾尝试在 Python 中使用多线程选项,但后来发现由于全局解释器锁定,在 Python 中无法使用多线程。这是否有更好的解决方案或方法来解析 1 GB 大小的 IFC 文件并创建节点和边缘?

我一直在考虑以下解决方案:将大型 IFC 文件划分为多个较小文件并单独解析它们以获得最终数据

有可能这样做吗?如果是,如何?

如果您有其他好的方法/解决方案,请提出建议。

先感谢您。

4

0 回答 0