我正在编写我的第一个Python 2.7多处理程序(woohoo)。
我正在使用multiprocessing Queues从子进程中检索数据。我的问题是关于队列.get()
方法。当我调用方法时,是否可以保证我将获得完整的对象(无论它有多大)?如果不是如何拆分。
该文档说:“从队列中删除并返回一个项目。 [...]”。但我不确定这是否意味着我可能最终得到一个对象的块或者它是由方法内部重建。
以下是一些示例代码:(统计信息可能会非常大)
p = Process(target=process_analyze_db, args=(db_names[j], j, queue_stats))
processes.append(p)
p.start()
while 1:
running = any(p.is_alive() for p in processes)
while not queue_stats.empty(): #Is this loop necessary?
data = queue_stats.get_nowait()
results[data[0]] = data[1]
if not running:
break
#In the process
def process_analyze_db (db_name, profile_nr, queue _stats):
#Do lots of stuff
queue_stats.put([profile_nr, stats])