【发布时间】:2016-12-01 07:57:04
【问题描述】:
我尝试从存档(tar)中读取 txt 文件并使用函数处理文件。我有很多文件,并决定使用多处理库来加快计算速度。但我收到错误“无法序列化 'ExFileObject' 对象”。下面是我的代码示例。 如何序列化“ExFileObject”对象或如何使用多处理库加速我的计算?我正在使用 Python 3.4
import tarfile
from multiprocessing import Process, Manager
def start():
result = {}
file_path = '...somepath'
tar = tarfile.open(file_path, 'r')
for file in tar:
extr_file = tar.extractfile(file)
p = Process(target=straight_calc, args=(extr_file, result)) #thows error
p.start()
p.join()
print(result)
def straight_calc(file, result):
content = file.readlines()
for line in content:
pass
if __name__ == '__main__':
start()
【问题讨论】:
-
至于使用多处理来“加快速度”,看来您实际上是在使事情变得有价值,因为您正在启动 一个 进程并等待它完成在继续之前。因此,您仍在按顺序工作,同时增加了为每个文件生成进程的开销。
标签: python multithreading multiprocessing