import pickle def func(data): print(data) def worker(array): array = pickle.loads(array) pool = ThreadPoolExecutor(1) for a in array: pool.submit( func,a ) pool.shutdown(wait=True) if __name__ == '__main__': processes = [] data = [i for i in range(300)] data = pickle.dumps(data) for i in range(3): p = multiprocessing.Process(target=worker, args=(data[100*i:100*(i+1)],)) processes.append(p) p.start() for p in processes: p.join() _pickle.UnpicklingError: pickle data was truncated
时间: 2024-04-20 21:26:54 浏览: 108
-pickle.PicklingError: Can't pickle <function... pycharm2023运行报错
这个错误是由于 pickle 数据被截断导致的。在这个代码中,您将数据分成三个部分,并在三个进程中处理它们。在这个过程中,有可能会发生数据被截断的情况,导致无法正确反序列化 pickle 数据。您可以尝试增加数据的大小,或者尝试将其分成更小的块进行处理,以避免这个错误。另外,您还可以将 pickle 数据保存到文件中,然后在不同的进程中读取和处理它们,以避免 pickle 数据被截断的问题。
阅读全文