Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中使用并行gem;要使用多少内核?_Ruby_Multithreading_Concurrency_Parallel Processing - Fatal编程技术网

在Ruby中使用并行gem;要使用多少内核?

在Ruby中使用并行gem;要使用多少内核?,ruby,multithreading,concurrency,parallel-processing,Ruby,Multithreading,Concurrency,Parallel Processing,我有一段缓慢的代码,我想通过使用并行gem和多核来加速 对于并行gem,您必须指定要使用的进程或线程的数量,因此我将其硬编码为使用与我相同数量的逻辑核。它工作得很好,但我的问题是,这段代码旨在分发给可能拥有不同数量内核的其他人并供他们使用 我是否应该尝试检测他们的机器拥有的核心数量,并使用该数量?或者,如果用户明确指定要使用的线程数,我是否应该默认为“无并行”,而只切换到多线程代码?(例如,pg\u还原) 如果我确实尝试检测内核,我应该尝试使用找到的所有内核吗?或者说,除了一个内核之外,使用所有

我有一段缓慢的代码,我想通过使用
并行
gem和多核来加速

对于并行gem,您必须指定要使用的进程或线程的数量,因此我将其硬编码为使用与我相同数量的逻辑核。它工作得很好,但我的问题是,这段代码旨在分发给可能拥有不同数量内核的其他人并供他们使用

我是否应该尝试检测他们的机器拥有的核心数量,并使用该数量?或者,如果用户明确指定要使用的线程数,我是否应该默认为“无并行”,而只切换到多线程代码?(例如,
pg\u还原


如果我确实尝试检测内核,我应该尝试使用找到的所有内核吗?或者说,除了一个内核之外,使用所有内核是否更礼貌?

不知道您的程序的内存密集度有多高,但这些要求也可能会导致内存比您正在测试的机器少的人出现重大意外问题


既然它是一个CLI工具,为什么不添加一个像
--procs
这样的标志,它为要使用的进程数提供一个参数,并由用户决定

不知道您的程序内存有多大,但这些要求也可能会给内存比您测试的机器少的人带来重大的意外问题


既然它是一个CLI工具,为什么不添加一个像
--procs
这样的标志,它为要使用的进程数提供一个参数,并由用户决定

你的用例是什么?我是在给你一个大文件来处理,还是你在运行一个守护进程?换句话说,我不会让你用消防水带给我的草坪浇水,但我肯定会让你用消防水带把我的房子从燃烧的地面上救下来;所以不是超临界的。它是一个CLI工具,用于执行用户可能只执行一次或两次的一次性任务。但这是12分钟和1分钟(在我的电脑上)的区别。这是我以前遇到过的一个问题,我想知道是否有一个普遍接受的做法。这个问题相当广泛,答案会根据具体情况而定。性能增益与内存使用、目标平台(支持COW优化)、使用的Ruby实现等。您可以提供一个配置文件,让用户决定应该生成多少进程/线程。您的用例是什么?我是在给你一个大文件来处理,还是你在运行一个守护进程?换句话说,我不会让你用消防水带给我的草坪浇水,但我肯定会让你用消防水带把我的房子从燃烧的地面上救下来;所以不是超临界的。它是一个CLI工具,用于执行用户可能只执行一次或两次的一次性任务。但这是12分钟和1分钟(在我的电脑上)的区别。这是我以前遇到过的一个问题,我想知道是否有一个普遍接受的做法。这个问题相当广泛,答案会根据具体情况而定。性能增益与内存使用、目标平台(支持COW优化)、使用的Ruby实现等的关系。您可以提供一个配置文件,让用户决定应该生成多少进程/线程。在这种情况下,它实际上使用很少的内存,只会影响CPU。但是我没有想到记忆;这是一个重要的考虑因素。在这种情况下,它实际上使用很少的内存,只会影响CPU。但是我没有想到记忆;这是一个重要的考虑因素。