python教程—茱莉亚的并行性。特点和局限性-Python实用宝典

python教程—茱莉亚的并行性。特点和局限性

在他们的arXiv论文中,Julia的原作者提到了以下内容:2.14并行性。 并行执行由一个基于消息的多处理系统提供,该系统在标准库中的Julia中实现。 语言设计支持通过 提供对称协程,也可以认为是 协同调度线程。这个特性允许异步 通信将隐藏在库中,而不需要 用户设置回调。Julia目前不支持native 线程,这是一个限制,但具有避免 共享内存同步使用的复杂性。

在他们的arXiv论文, Julia的原作者提到了以下内容:

2.14并行性。
并行执行由一个基于消息的多处理系统提供,该系统在标准中的Julia中实现。
语言设计支持通过
提供对称协程,也可以认为是
协同调度线程。这个特性允许异步
通信将隐藏在中,而不需要
用户设置回调。Julia目前不支持native
线程,这是一个限制,但具有避免
同步使用共享内存的复杂性。

他们说Julia不支持本机线程是什么意思?什么是原生线程?

其他解释语言,如PythonR支持这种并行性吗?这件事只有茱莉亚一个人吗?

回答

“本机线程”是独立的执行上下文,由操作系统内核管理,访问共享内存空间,并可能在单独的内核上并发执行。将此与单独的进程进行比较,单独的进程可以在多个核心上并发执行,但具有单独的内存空间。确保进程良好地交互很容易,因为它们只能通过内核彼此通信。确保线程不会以不可预知的、有bug的方式交互是非常困难的,因为它们可以以不受限制的方式读写相同的内存。

R的情况相当简单:R不是多线程的。Python稍微复杂一点:Python确实支持线程,但是由于全局解释器锁(GIL),所以不可能实际并发执行Python代码。其他流行的开源动态语言在原生线程方面处于各种混合状态(Ruby: no/kinda/yes?;节点。js: no),但是一般来说,答案是否定的,它们不支持完全并发的本机线程,所以Julia不是唯一这样做的人。

When we do add shared-memory parallelism to Julia, as we plan to – whether using native threads or multiple processes with shared memory – it will be true concurrency and there will be no GIL preventing simultaneous execution of Julia code. However, this is an incredibly tricky feature to add to a language, as attested by the non-existent or limited support in other very popular, mature dynamic languages. Adding a shared-memory concurrency model is technically difficult, but the real problem is designing a programming model that will allow programmers to make effective use of hardware concurrency in a productive and safe way. This problem is generally unsolved and is a very active area of research and experimentation – there is no "gold standard" to copy. We could just add POSIX threads support, but that programming model is general considered to be dangerous and incredibly difficult to use correctly and effectively. Go has an Excellent concurrency story, but it is designed for writing highly concurrent servers, not for concurrently operating on large data, so it's not at all clear that simply copying Go's model is a good idea for Julia.

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论