我有一个 gzip json 文件,我想使用多处理并行解析它。
如何打开 gzip 文件,对于多处理库中的每个进程,我会从中读取一行并根据需要进行解析。
换句话说,我将打开一个 gzip 文件(将其想象成一个队列)和 4 个进程将使用这些行并对其进行解析。 所以如果我在这个文件中有 1000000 行 json,每个进程将消耗大约 250000 行。
文件包含 JSON 字符串,每行一个。像这样:
{“键”:值} {“核心价值} . . .
这是您正在寻找的功能的简单基本框架:
import gzip
from concurrent.futures import ProcessPoolExecutor as Executor
def parse(line):
print(f'Parsing: {line}')
with Executor(4) as e:
with gzip.open('input.gz') as f:
for line in f:
e.submit(parse, line.decode())
上面的代码,正如您指定的那样,打开 gzip 文件并逐行将文件的完整内容交给一个包含四个进程的池。