以下是我的代码:
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活动。
这会导致什么?我的代码设计得当吗?