是否有一個很好的跨平臺方法來確定機器在elisp中的處理器數量?我試圖讓我的配置自動檢測一些構建選項,並希望自動使用處理器的數量+ 1. Grepping/proc/cpuinfo不是我的解決方案,因爲它不適用於Windows。獲取emacs中處理器的數量
4
A
回答
8
Emacs 24.3 Lisp無權訪問該信息。您的選項似乎包括:
- 編寫一個Elisp庫,它使用SYSTEM-TYPE的值選擇系統特定的方法來獲取處理器計數;
- 修改Emacs C源代碼並重建它,以便它可以針對Emacs構建的每個潛在的多處理器平臺,在Lisp級別顯示處理器數量。
至少,這是四小時前,當我第一次開始寫這個答案。但後來我感興趣的問題,現在你有第三個選項:
- 下載我system-cores.el庫,它實現了第一的上述兩個方案,並呼籲
(system-cores :physical)
獲得物理處理器的數量,(system-cores :logical)
得到邏輯核心的數量,或者只是簡單的(system-cores)
以獲得包含兩者的alist。
注意事項包括:
- 該庫對工藝線功能強烈依賴。如果該函數在需要調用SYSTEM-CORES的上下文中無法做到任何明智的事情,那麼SYSTEM-CORES也不能。 (例如,如果您在達爾文並且
(getenv "PATH")
不包含/usr/sbin
,PROCESS-LINES將用「正在搜索程序:沒有這樣的文件或目錄,system_profiler」進行彈出。) 當前已知的系統是支持的是GNU/Linux(任何帶有/ proc/cpuinfo的內容,或多或少),Windows NT(及其衍生產品,包括2000,XP和所有後續版本),以及達爾文(OS X,理論上至少10.8,如10.2)。不巧的是,這些也是我可以訪問的系統。
我還包括一個代表,其中應該至少在某些BSD風格上正常工作,但我沒有一個BSD框來測試它,所以不知道它是否會真正的工作 - 至少,你幾乎肯定需要修改由SYSTEM-CORES-SYSCTL委託檢查的sysctl列表。
如果您使用的是Linux,Windows或OS X的各種現代版本,那麼太棒了!你應該很好走,開箱即用。如果沒有,並且如果您的平臺包含一個命令行實用程序,該實用程序在其結果中提供了必需的信息,那麼爲您的系統編寫委託應該不會很困難。或者,如果你不想自己寫一個委託,然後發郵件給我所有的:
- 的問題
- 它生產系統上的輸出樣本命令行實用程序調用合適
- 的
M-: system-type
在Emacs - 的
M-: system-configuration
輸出在Emacs 輸出
,我就可以寫一個代表自己,並將其添加到庫中。
編輯:本:cores
和:processors
關鍵字已改爲分別:physical
和:logical
;我無法讓他們保持直線,我也不明白爲什麼我會期待其他人。
編輯:Per @ lunaryorn,將(split-string (shell-command-to-string ...))
替換爲(process-lines ...)
。這節省了調用一個shell,這可能會使庫更加可靠,並且使代碼更容易閱讀。
相關問題
- 1. Node.js - 獲取可用處理器數量
- 2. 如何獲得Emacs的妥善處理C預處理器
- 3. 獲取虛擬機內物理處理器的數量
- 4. 如何獲取64位機器上的處理器數量?
- 5. 獲取批處理變量
- 6. 獲取Mac上的處理器滴答數量?
- 7. 獲取預處理器宏
- 8. C++獲取處理器ID
- 9. 獲取Abaqus後處理器中的元素質量
- 10. 無法獲取計數器變量在事件處理程序
- 11. 訪問WMI中的處理器數量
- 12. Clojure中的處理器數量? Java interop
- 13. 獲取處理器中()方法
- 14. 如何獲取jms隊列中待處理消息的數量
- 15. MPI處理器數量?
- 16. 我如何獲得Ant中可用處理器的數量
- 17. 處理器數量/每個處理器的內核數量Intel Core 2 Duo
- 18. 更好地處理從iPhone中的服務器獲取數據
- 19. 在Java註釋處理器中獲取數組的類型
- 20. 獲取一個特定進程正在運行的處理器的數量
- 21. Emacs中文本的語言批處理?
- 22. 如何獲得的處理器數量上的Windows Phone
- 23. 獲取環境變量在Java註解處理器
- 24. 處理器的數量不CPUZ
- 25. 錯誤的mpi處理器數量
- 26. 處理大量的服務器數據
- 27. 檢測IDLE處理器的數量ruby
- 28. 獲取消息處理器IP
- 29. 獲取RoutedEvent來源爲處理器
- 30. MPI以最小值獲取處理器
你可以用'process-lines'來替換'(split-string(shell-command-to-string ...))'的各種實例。 – lunaryorn
@ lunaryorn哦,嘿,那不需要調用shell!謝謝你的提示 - 我會相應地更新圖書館。 –