Должен ли я использовать блокировку с очередью в Python? - PullRequest
0 голосов
/ 09 июня 2018

Я сейчас изучаю многопроцессорность.Я написал код, показанный ниже:

import multiprocessing as mp

def foo(q):
    while q.empty() is not True:
        filename_with_full_path = q.get()
        ...processing the file...
    return

if __name__ == "__main__":
    q = mp.Queue()

    p1 = mp.Process(target=foo, args=(q))
    p2 = mp.Process(target=foo, args=(q))

    p1.start()
    p2.start()

    file_counter = 0
    for filename in os.listdir(directory):
        if filename.endswith(".jpg"):
            filename_with_full_path = directory + '/' + filename
            q.put(filename_with_full_path)
            file_counter += 1

    while q.empty() is not True:
        pass  

    p1.join()
    p2.join()

Дело в том, что оно работает!Однако все подозрительно прошло хорошо.Должен ли я на самом деле использовать блокировку при вызове методов «положить / получить»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...