Python: блокировки из `threading` и` multiprocessing` взаимозаменяемы? - PullRequest
7 голосов
/ 11 апреля 2009

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

Ответы [ 3 ]

7 голосов
/ 11 апреля 2009

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

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

1 голос
/ 11 апреля 2009

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

1 голос
/ 11 апреля 2009

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

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

...