2009-12-30 81 views

回答

12

由於缺少處理共享信號量等原因,線程模塊的同步原語比多重處理更輕,速度更快。使用線程的鎖。進程應該使用多處理的鎖。

+2

更不用說'多處理'不像'threading'那樣便攜了;) – 2009-12-30 22:14:51

+1

爲什麼你必須這樣:) – jnoller 2009-12-31 01:41:46

2

我期望多線程同步原語的速度非常快,因爲它們可以輕鬆地使用共享內存區域。但我想你必須進行速度測試才能確定它。此外,您可能會有不必要的副作用(並且在文檔中未指定)。

例如,進程鎖可以很好地阻塞進程的所有線程。如果沒有,釋放鎖可能不會喚醒進程的線程。

簡而言之,如果您希望自己的代碼能夠正常工作,那麼在使用線程時應使用線程同步基元,如果使用的是進程,則應使用線程同步基元。否則,它可能僅適用於您的平臺,或者甚至僅適用於您的特定版本的Python。

0

multiprocessingthreading包的目標略有不同,但都是併發性相關的。 threading協調一個進程內的線程,而multiprocessing提供線程類接口來協調多個進程。

如果您的應用程序不會產生需要數據同步的新進程,則multiprocessing的權重會更大,threading程序包應該更適合。

+0

我明白線程和多處理之間的區別。我很好奇爲什麼要在多處理中使用線程的同步原語。 – 2009-12-30 14:40:50

相關問題