gpt4 book ai didi

python - Julia >=1.3 和 Python 3.x 中的多线程模型比较

转载 作者:行者123 更新时间:2023-12-03 12:44:04 25 4
gpt4 key购买 nike

我想从用户的角度了解 Julia >= 1.3 和 Python 3 之间的多线程编程模型的差异。

是否有一个比另一个更有效(在增加线程数减少更多计算时间的意义上)?在哪些情况下(例如,一个模型可能有优势,但仅限于计算或内存密集型任务)?

一个比另一个更实用/提供更高级别的功能吗?

一个比另一个更灵活(例如,它可以应用于更广泛的案例)?

最佳答案

语言之间存在一些差异,Julia 提供了许多级别的功能,您可以在 Python 中找到这些功能。
您有以下类型的并行性(我在这里讨论的是标准语言特性,而不是通过外部库提供的功能):

  • CPU 的 SIMD(单指令多数据)特性
  • Julia :结合@simd@inbounds (见 https://docs.julialang.org/en/v1/manual/performance-tips/ )
  • Python:不支持
  • 绿色线程(也称为协程)。 (这不是一个实际的线程 - 但允许在多个任务中使用一个系统线程。这对于并行化 IO 操作(例如 Web 抓取或进程间通信)特别有用 - 例如,如果一个任务正在等待 IO,则另一个任务可以并行执行。)
  • Julia:结合使用@sync(收集一组任务)和@async(生成新任务)宏(更多详细信息请参阅https://docs.julialang.org/en/v1/manual/parallel-computing/)
  • Python:使用 asyncio (更多详情见 https://docs.python.org/3/library/asyncio-task.html )
  • 多线程:跨多个系统线程在单个进程(和共享内存)内并行运行多个任务:
  • Julia :使用 Threads.@threads用于并行化循环和 Threads.@spawn 的宏在单独的系统线程上启动任务。使用锁或原子值来控制并行执行。 (更多详情见https://docs.julialang.org/en/v1/manual/parallel-computing/)
  • Python:由于 GIL(global-interpreter-lock),对 CPU 主导的任务没有用(参见下面@Jim 的评论)
  • 多处理
  • Julia:使用 Distibuted 中的宏用于并行化循环和生成远程进程的包(更多详细信息请参阅 https://docs.julialang.org/en/v1/manual/parallel-computing/)
  • Python:使用 multiprocessing图书馆 - 更多细节见 https://docs.python.org/3.8/library/multiprocessing.html
  • 关于python - Julia >=1.3 和 Python 3.x 中的多线程模型比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59825060/

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