这里的主要问题是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