goroutines是否适合大型并行计算边界问题?

问题描述 投票:6回答:2

例程是否优先处理数字问题?

我对Go的精益设计,速度非常感兴趣,但最令我感兴趣的是,渠道是一流的对象。我希望最后一点可以通过它们应允许的复杂互连模式,为大数据启用一类全新的深度分析算法。

我的问题域需要对传入数据流进行实时计算范围分析。可以将数据划分为100-1000个“问题”,每个“问题”将需要10到1000秒的时间来计算(即,其粒度是高度可变的)。但是,结果必须在输出有意义之前可用,即说有500个问题出现,并且必须解决所有500个问题,然后才能使用其中的任何一个。该应用程序必须能够扩展,有可能扩展到成千上万个(但不太可能成千上万个)问题。 考虑到我不太担心数值库的支持(大部分内容是自定义的),Go看起来很理想,因为我可以将每个问题映射到goroutine。在我投资学习Go之前,不要说Julia,Rust或一种功能语言(据我所知,没有一种语言具有一流的渠道,因此对我来说是直接不利的)我需要知道goroutines是否是[[properly

抢先的多任务。也就是说,如果我在一台功能强大的多核计算机上运行500个受计算约束的goroutine,我是否可以期望在所有“问题”之间进行合理的负载平衡,还是必须一直以1995年的方式合作“屈服”。考虑到问题的可变粒度以及在计算过程中我通常不知道需要花费多长时间的事实,这个问题尤其重要。

如果另一种语言能更好地为我服务,我很高兴听到有关它的信息,但是我要求执行的线程(或go /协程)必须轻量级。以Python多处理模块为例,对于我的扩展野心而言,它的资源过于密集。只是为了抢先:我do

理解并行性和并发性之间的区别。

Go例程是否可以抢先处理数字问题? Go的精益设计,速度让我非常感兴趣,但最让我感兴趣的是渠道是一流的对象。我希望最后一个...

parallel-processing go goroutine
2个回答
7
投票

1
投票
© www.soinside.com 2019 - 2024. All rights reserved.