Python多进程写入文件

基本步骤:

1. 使用wb模式打开文件,truncate函数预分配文件大小

2. 分配写入部分至多进程任务,rb+模式打开同一个文件,写入不同的部分。

 

示例:

import multiprocessing as mp


def w(fn, range_, content):
    f = open(fn, 'rb+')
    f.seek(range_[0])
    length = range_[1] - range_[0]
    for i in range(length // len(content) - 1):
        f.write(content)
    f.write(b'\n')


def main():
    fn = 'a.txt'
    p_num = 4
    total_length = 4 * 1024 ** 1

    open(fn, 'wb').truncate(total_length)

    pool = mp.Pool(p_num)

    block = total_length // p_num
    ranges = [(block * i, block * (i + 1)) for i in range(p_num)]
    contents = [b'a', b'b', b'c', b'd']

    args = [(fn, range_, content) for range_, content in zip(ranges, contents)]
    print(args)

    pool.starmap(w, args)

    print('end')


if __name__ == '__main__':
    main()

 

posted @ 2025-08-06 16:15  小鱼圆又圆  阅读(14)  评论(0)    收藏  举报