gpt4 book ai didi

python - Python à la Grand Central Dispatch 中的并行处理?

转载 作者:太空狗 更新时间:2023-10-30 02:49:29 25 4
gpt4 key购买 nike

有没有一种方法可以使用类似于 Apple 的概念在 Python 中进行并行处理 Grand Central Dispatch ? Grand Central Dispatch 从一开始就看起来像是一种处理并行处理的好方法。

如果 Python 没有基本等效的模块,那么 Grand Central Dispatch 背后可以用 Python 有效实现的基本概念是什么?

我对 Grand Central Dispatch 了解不多,因此提出这个问题:我很想知道 Grand Central Dispatch 是否使用 (1) 在 Python 中尚不可用,和/或 (2) 可以使用的范例用 Python 实现

最佳答案

这里的主要问题是 GCD 的编译器和操作系统部分。为了运行 GCD,您需要编译器理解 Blocks。你可以创建一些在编程时工作类似的东西,但它根本不会有相同的性能。使用 GCD,您可以创建和排队数千个 block ,但仍然只有 2 或 4 个线程执行该 block 。如果你在没有编译器接受它们的情况下实现 block 的高级功能,我看到的唯一方法是使用线程来“模拟” block 。然后,由于上下文切换和内存使用,在具有 2 到 4 个 CPU 内核的系统中使用数千个线程将是一个惊人的性能困惑。

您不仅需要适当的编译器扩展来支持 GCD,还需要适当的操作系统扩展来管理 block 入队的 GCD 队列。对于使用 GCD 的程序,您需要操作系统以某种方式运行,以控制正在执行的线程数,以及当 CPU 内核可用时激活线程的时间和数量。使用 GCD,线程和队列是独立的。线程只是从队列(轻型数据结构)中获取 block ,但可以从任何队列中获取 block 。所以有多少 block 并不重要,因为它们只是存储在主内存中某处的代码和指针。

您根本无法从 Python 中实现所有这些低级功能。并且仅实现高级“GCD 编程方式”,您将编写出非常慢的程序,甚至可能无法在个人计算机上执行。

首先,例如 Cython 可以支持 GCD,以及您想要使用的操作系统。 Linux 有一个名为 libdispatch 的实现,可用于 Devian。但它只实现了编译器部分,因此程序启动的线程数与系统内核减去一个一样多。所以我认为这仍然不是一个好的选择。有人应该为 GCD 添加 Linux 操作系统支持,也许作为内核模块。

Windows 没什么好说的。我真的不知道。

因此,自然而然的第一步应该是在 Cython 中为 Mac OS 添加和测试对 CGD 的支持。从那里,您可以创建一个在内部使用 de Cython GCD 库的 native Python 库,为普通 Python 程序员提供 block 和队列。

Anoder 选项可能是 CPython 项目接受这个,以及 Python 项目添加 block 和队列作为 python 的 native 功能。那将是惊人的 XD

关于python - Python à la Grand Central Dispatch 中的并行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com