小编akh*_*ilc的帖子

使用多处理写入多个文件。错误:“TypeError:无法序列化‘_io.TextIOWrapper’对象”

我正在尝试将多处理(4 个内核/进程)的结果写入文件。由于 CPU 内核同时工作,我想制作 4 个文件0.txt1.txt2.txt3.txt并将其保存在multiprocessing.Manager().list(). 但我收到错误,TypeError: cannot serialize '_io.TextIOWrapper' object.

def run_solver(total, proc_id, result, fouts):
    for i in range(10)):
        fouts[proc_id].write('hi\n')

if __name__ == '__main__':
    processes = []
    fouts = Manager().list((open('0.txt', 'w'), open('1.txt', 'w'), open('2.txt', 'w'), open('3.txt', 'w')))
    for proc_id in range(os.cpu_count()):
        processes.append(Process(target=run_solver, args=(int(total/os.cpu_count()), proc_id, result, fouts)))

    for process in processes:
        process.start()

    for process in processes:
        process.join()

    for i in range(len(fouts)):
        fouts[i].close()
Run Code Online (Sandbox Code Playgroud)

我也尝试在函数内部使用文件句柄填充列表,如下所示。

def run_solver(total, proc_id, result, fouts): …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing python-3.x

3
推荐指数
1
解决办法
4954
查看次数

如何计算图像的 L1 范数?

我有几个与 l1 规范相关的问题。和TV(Total Variation)一样吗?如何在matlab中计算图像的L1范数?我确实阅读了电视的维基页面,但对我来说太复杂了。

matlab image image-processing

2
推荐指数
1
解决办法
4521
查看次数