Мультипроцессинг Python. Метод get () в Queue - PullRequest
0 голосов
/ 25 апреля 2018

Я пишу свою первую многопроцессорную программу на 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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...