Питон:Блокировки от `threading` и `multiprocessing` взаимозаменяемы?

StackOverflow https://stackoverflow.com/questions/739687

Вопрос

Замки от threading модуль взаимозаменяем с модулями из multiprocessing модуль?

Это было полезно?

Решение

Обычно вы можете использовать эти два понятия взаимозаменяемо, но вам необходимо помнить о различиях.Например, multiprocessing.Event поддерживается именованным семафором, который зависит от платформы приложения.

Multiprocessing.Lock поддерживается Multiprocessing.SemLock, поэтому ему нужны именованные семафоры.По сути, вы можете использовать их взаимозаменяемо, но использование блокировок многопроцессорности предъявляет к приложению некоторые требования к платформе (а именно, оно не работает на BSD :))

Другие советы

Я так не думаю.Блокировки потоков находятся внутри одного и того же процесса, тогда как блокировка многопроцессорности, скорее всего, будет находиться в общей памяти.

В прошлый раз, когда я проверял, многопроцессорность не позволяет вам совместно использовать блокировку в очереди, которая представляет собой блокировку потоков.

Да, вы можете использовать блокировки из модуля многопроцессорности как обычно в своем однопроцессном приложении, но если вы используете многопроцессорность, вам следует использовать его блокировки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top