Я пишу свою первую многопроцессорную программу на Python 2.7 (woohoo).Я использую Многопроцессорные очереди для извлечения данных из моих подпроцессов.Мой вопрос о методе 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])