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()