在我的并行化代码中,什么可能导致看似无限的循环?

时间:2016-05-28 12:47:31

标签: python multiprocessing

以下是我的代码:

def data_processing_function(some_data):
    do some things with some_data
    queue.put(some_data)

processes = []
queue = Queue()

for data in bigdata:
    if data meets certain criteria:
        prepared_data = prepare_data(data)
        processes += [Process(target=data_processing_function,
                              args=prepared_data)]
        processes[-1].start()

for process in processes:
    process.join()

results = []
for i in range(queue.qsize()):
    result += [queue.get()]

当我尝试使用简化数据集时,一切都很顺利。但是当我使用完整数据集启动它时,看起来脚本在process.join()部分期间进入了无限循环。 在绝望的移动中,我杀死了除主要进程之外的所有进程,并且执行继续进行。现在它挂起queue.get()而没有显着的CPU或RAM活动。

这会导致什么?我的代码设计得当吗?

0 个答案:

没有答案