基本步骤:
1. 使用wb模式打开文件,truncate函数预分配文件大小
2. 分配写入部分至多进程任务,rb+模式打开同一个文件,写入不同的部分。
示例:
import multiprocessing as mpdef 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 = 4total_length = 4 * 1024 ** 1open(fn, 'wb').truncate(total_length)pool = mp.Pool(p_num)block = total_length // p_numranges = [(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()