首页 > 解决方案 > 多处理 pickle.load() :: EOFError - 输入不足

问题描述

我有一个问题,我正在运行一个 CPU 繁重的多处理任务,该任务读取和写入一个 pickle 文件以避免在同一输入上运行计算。

我有一个用于文件写入功能的队列[未显示],但不是用于读取功能。大多数时候,当我运行多进程时,我会收到“EOFError - 输入不足”异常。我最好的猜测是两个进程试图同时读取文件(通过pickle_read)。

def pickle_read(category):
    with open("completed_search.txt", "rb") as pickle_set:
        try:
            return pickle.load(pickle_set)[category]
        except EOFError as e:
            handle_error(e)


if reg in pickle_read('region'):
    continue

如何在满足条件(即不返回 NoneType)的同时对进程进行排队以允许同步读取?

标签: pythonpython-3.xasynchronousmultiprocessingpickle

解决方案


推荐阅读