這裏的主要問題是GCD的編譯器和操作系統部分。爲了讓GCD運行,您需要編譯器來理解Blocks。你可以在編程時創建類似的工作,但它不會有相同的性能。使用GCD,您可以創建並排列數千個塊,並且仍然只有2或4個線程執行此塊。如果在編譯器接受它們的情況下實現塊的高級功能,我所看到的唯一方法是使用線程來「模擬」塊。然後,由於上下文切換和內存使用,在具有2至4個CPU內核的系統中使用數千個線程將會是一個令人驚歎的性能混亂。
不僅需要適當的編譯器擴展來支持GCD,還需要適當的操作系統擴展來管理排入隊列的GCD隊列。對於使用GCD的程序,您需要操作系統以控制執行多少個線程的方式運行,以及在CPU內核可用時要激活多少線程。使用GCD,線程和隊列是獨立的。線程只是從隊列(輕量級數據結構)中獲取塊,但是從任何這些線程中獲取。因此,有多少塊並不重要,因爲它們只是代碼塊和存儲在主存儲器中某處的指針。
你根本無法實現python的所有這些低級功能。只有實施高水平的「GCD編程方式」,您纔會製作速度慢的程序,或者甚至不可能在個人計算機上執行。因此,首先,例如Cython應該支持GCD,以及您想要使用的操作系統。 Linux有一個名爲libdispatch的實現,可用於Devian。但是它只實現了編譯器部分,所以程序啓動的線程數與系統內核的線數相差很多。所以我認爲這還不是一個好的選擇。有人應該爲GCD添加Linux操作系統支持,可能作爲內核模塊。
沒有關於windows的說法。我真的不知道。
因此,第一個自然的步驟,應該是添加和測試在Cython for Mac OS中對CGD的支持。從那裏,你可以做一個內部使用de Cython GCD庫的本地Python庫,爲普通的python程序員提供塊和隊列。
Anoder選項可以是CPython項目來支持這一點,Python項目可以將塊和隊列添加爲python的本地特性。這將是驚人的XD
請參閱'multiprocessing' http://docs.python.org/library/multiprocessing.html –
@AustinMarshall:你是否暗示''多處理'本質上包含了Grand Central Dispatch的所有核心概念? – EOL