我似乎無法找到價值_multiprocessing.SemLock.SEM_VALUE_MAX
試試這個:
python -c "import _multiprocessing; import platform; print platform.platform(), _multiprocessing.SemLock.SEM_VALUE_MAX"
迄今發現的特定值(請編輯並相應地更新):
# OSX 10.9.5
Darwin-13.4.0-x86_64-i386-64bit 32767
# Linux Mint Qiana
Linux-3.13.0-24-generic-x86_64-with-LinuxMint-17-qiana 2147483647
# Fedora
Linux-3.10.0-123.20.1.el7.x86_64-x86_64-with-fedora-21-Twenty_One 2147483647
# Ubuntu Trusty
Linux-3.13.0-45-generic-x86_64-with-Ubuntu-14.04-trusty 2147483647
# Debian 8
Linux-2.6.32.46-i686-with-debian-8.0 2147483647
這可能是b對於文檔的改進suggest是一個很好的例子。如果你會如此善良。
文檔暗示
我找不到文檔中任何指定了一個負值意味着
它實際上平臺的依賴,用上面的命令得到實際值。
雖然似乎沒有要在特定maxsize
到multiprocessing
文檔,標準庫的Queue文檔有提供:
如果MAXSIZE小於或等於零時,隊列大小是無限的。
和multiprocessing's guide指出
隊列類是Queue.Queue的近克隆。
因此,我想這是公平的假設,你的解釋是正確的,即創建由OS支持可能的最大的隊列。事實上,我們並沒有恢復到假設,這是一個事實:
底層細節
如果你想的_multiprocessing.SemLock.SEM_VALUE_MAX
是如何在編譯時確定的血淋淋的細節,請繼續閱讀。
是否有任何文件闡明這個魔法值?
否 - 如果你真的想知道,你必須遵循的代碼...對於CPython的有這些#include文件multiprocessing.h和平臺的C庫的limits.h,後者最終被納入由Python.h。換句話說,根據主機平臺設置。
按Open Group的文檔上limits.h中它是被定義爲
旗語可具有的最大值。可接受的最小值:_POSIX_SEM_VALUE_MAX
所以_POSIX_SEM_VALUE_MAX
是其又被定義爲最小:
旗語可具有的最大值。 Value:32 767
此外,'multiprocessing.Queue'文檔說:'Queue'實現'queue.Queue'除了'task_done()'和'join()'之外的所有方法。 –
@EllaShar:我想這與「近克隆」一樣好。沒有人能夠直接保證語義,但它們都意味着它非常強烈。編輯答案;謝謝。 – abarnert