我试图在bash脚本中在26台服务器上运行多个mongodump.
我可以运行3个命令
mongodump -h staging .... &
mongodump -h production .... &
mongodump -h web ... &
同时,当一个人完成时,我想开始另一个mongodump.
我无法同时运行所有26个mongodumps命令,服务器将在CPU上运行.最多3个mongodumps同时.
我正在设置一段代码来并行处理我的数据中N组的一些计算foreach.
我有一个涉及调用的计算h2o.gbm.
在我目前的顺序设置中,我使用了大约70%的RAM.
如何在并行代码中正确设置h2o.init()?我担心使用多个内核时可能会耗尽内存.
我的Windows 10机器有12个内核和128GB内存.
这个伪代码会有用吗?
library(foreach)
library(doParallel)
#setup parallel backend to use 12 processors
cl<-makeCluster(12)
registerDoParallel(cl)
#loop
df4 <-foreach(i = as.numeric(seq(1,999)), .combine=rbind) %dopar% {
df4 <- data.frame()
#bunch of computations
h2o.init(nthreads=1, max_mem_size="10G")
gbm <- h2o.gbm(train_some_model)
df4 <- data.frame(someoutput)
}
fwrite(df4, append=TRUE)
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud) 我正在尝试了解java 8并行流.我写了下面的代码,首先使用Executor,然后使用并行流.看起来平行流需要两倍(10秒)的时间与Executor接近(5秒).在我看来,并行流也应该表现出类似的性能.任何想法为什么并行流需要两倍的时间?我的电脑有8个核心.
/**
*
*/
package com.shashank.java8.parallel_stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
* @author pooja
*
*/
public class Sample {
public static int processUrl(String url) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Running Thread " + Thread.currentThread());
return url.length();
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
usingExecutor();
usingParallelStream(); …Run Code Online (Sandbox Code Playgroud) 我有以下问题.
为什么在标准节点上提交作业(最大核56)时一切运行正常,但是当我向big_memory节点(最大核128)提交相同的作业/代码时,我收到错误?
- R中的并行化代码:
no_cores < - detectCores() - 1
cl < - makeCluster(no_cores,outfile = paste0('./ info_parallel.log'))
- 错误......
socketConnection出错(master,port = port,blocking = TRUE,open ="a + b",:
无法打开连接
调用:... doTryCatch - > recvData - > makeSOCKmaster - > socketConnection
另外:警告信息:
在socketConnection中(master,port = port,blocking = TRUE,open ="a + b",:
localhost:11232无法打开
执行停止
反序列化错误(节点$ con):从连接读取错误
调用:... doTryCatch - > recvData - > recvData.SOCKnode - > unserialize
执行停止
反序列化错误(节点$ con):从连接读取错误
调用:... doTryCatch - > recvData - > recvData.SOCKnode - > unserialize
执行停止
正如我所说,R代码在标准节点上运行良好,所以我认为它是large_memory节点的问题.那可能是什么?
谢谢,
我刚刚学习了Java中并行处理的基础知识.我读到了这个问题:单个CPU上有多个线程和性能,并且想知道在单核系统上多线程可能比单线程更快的原因还有其他原因.我在考虑每个线程如何拥有它自己使用的内存.想象一下,在Java中,FXML是主线程的一部分.这可能会增加主线程内存的大小,反过来这可能会减慢线程,因为它必须在交换上加载更多的值,或者更糟糕的是,必须对内存进行更多调用(我认为当前线程的值被复制到缓存中).
总结一下,由于内存分离,可以在单核系统上创建多个线程吗?
我想获取目录中文件的文件信息(文件名和大小,以字节为单位).但是有很多子目录(~1000)和文件(~40 000).
实际上我的解决方案是使用filepath.Walk()来获取每个文件的文件信息.但这很长.
func visit(path string, f os.FileInfo, err error) error {
if f.Mode().IsRegular() {
fmt.Printf("Visited: %s File name: %s Size: %d bytes\n", path, f.Name(), f.Size())
}
return nil
}
func main() {
flag.Parse()
root := "C:/Users/HERNOUX-06523/go/src/boilerpipe" //flag.Arg(0)
filepath.Walk(root, visit)
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用filepath.Walk()进行并行/并发处理?
如何将函数对NumPy数组的元素的应用numpy.apply_along_axis()并行化,以利用多核?在通常情况下,要应用的函数的所有调用都是独立的,这似乎是很自然的事情。
在我的特定情况下,如果此事宜,应用的轴线是轴0: np.apply_along_axis(func, axis=0, arr=param_grid)(np是NumPy的)。
我快速浏览了Numba,但似乎无法通过如下循环获得这种并行化:
@numba.jit(parallel=True)
result = np.empty(shape=params.shape[1:])
for index in np.ndindex(*result.shape)): # All the indices of params[0,...]
result[index] = func(params[(slice(None),) + index]) # Applying func along axis 0
Run Code Online (Sandbox Code Playgroud)
NumPy中显然还有一个编译选项可通过OpenMP进行并行化,但似乎无法通过MacPorts进行访问。
还可以考虑将数组切成几块并使用线程(以避免复制数据),然后在每块上并行应用函数。这比我要查找的要复杂(如果全局解释器锁释放不充分,则可能不起作用)。
能够以简单的方式使用多个内核来完成简单的可并行化的任务,例如将函数应用于数组的所有元素(这实际上是这里所需要的,函数func()只需一个一维数组),这非常好。参数)。
我是Spring批次的新手,无法弄清楚如何做到这一点..
基本上我有一个spring文件轮询器,每隔N分钟运行一次,在某个目录中查找带有某个名字的文件(例如:A.txt&B.txt).在任何时候,此目录中可能有最多2个文件(A和B).通过Spring Batch Job,这两个文件将被处理并持久保存到2个不同的DB表中.
这些文件有些类似,因此使用相同的处理器/写入器.
现在我设置的方式,每个轮询周期1文件被选中并且作业运行.
假设目录中有2个文件(A.txt和B.txt),有没有办法创建2个作业,以便两个作业可以并行运行?
我的bash脚本中有以下代码段
#!/bin/bash
for ((i=100; i>=70; i--))
do
convert test.png -quality "$i" -sampling-factor 1x1 test_libjpeg_q"$i".jpg
done
Run Code Online (Sandbox Code Playgroud)
如何使用所有cpu内核并行执行for循环.我已经看到gnu parallel被使用但是在这里我需要输出文件名在特定的命名方案中,如上所示
当我运行此程序时-s:
module Main where
import Control.Parallel.Strategies
main :: IO ()
main = do let xs = take 1000 $ product . take 1000 . repeat <$> [1..]
x = product (xs `using` parList rseq)
putStrLn (show x)
Run Code Online (Sandbox Code Playgroud)
火花创建:
SPARKS:1000(993转换,0溢出,0哑,6 GC,1失败)
如果我换parList到parTraversable
x = product (xs `using` parTraversable rseq)
Run Code Online (Sandbox Code Playgroud)
没有产生火花:
SPARKS:0(0转换,0溢出,0哑,0 GC'd,0失败)
如果我rseq改为rdeepseq:
main = do let xs = (take 1000 $ product . take 1000 . repeat <$> [1..]) :: [Integer] …Run Code Online (Sandbox Code Playgroud) bash ×2
concurrency ×2
gnu-parallel ×2
java ×2
performance ×2
r ×2
arrays ×1
file-io ×1
filesystems ×1
foreach ×1
go ×1
h2o ×1
haskell ×1
java-8 ×1
memory ×1
numpy ×1
python ×1
spring ×1
spring-batch ×1
xargs ×1