将多处理池用于可扩展列表

时间:2016-03-18 01:44:25

标签: python multithreading producer-consumer

我正在尝试为外部排序问题实现生产者 - 消费者解决方案。我有三个二进制文件打破文件,排序文件和合并两个文件的二进制文件。这是我的多处理池实现的排序:

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

0 个答案:

没有答案