我正在尝试为外部排序问题实现生产者 - 消费者解决方案。我有三个二进制文件打破文件,排序文件和合并两个文件的二进制文件。这是我的多处理池实现的排序:
files = [a list of files generated after running splitter binary]
pool = Pool(args["numthreads"])
pool.map(sort_file, files)
pool.close()
pool.join()
这是我的sort_file函数:
def sort_file(file):
cmd = ["./file_sort"] + [file]
print('executing: %s')%' '.join(cmd)
subprocess.call(cmd)
这是按预期工作但我无法为merge_files函数进行类似的模式工作,该函数使用列表中的两个文件生成一个新文件,该文件应该追加到列表中。我的merge_file代码如下所示:
def merge_file(file1, file2):
cmd = ["./merger"] + [file1, file2]
out, err, ecode = execute_commands(cmd)
next_file.put(out) #This is the merged file which will be appended back to list