在后台运行作业时,Bash非常冗长:
$ echo toto&
toto
[1] 15922
[1]+ Done echo toto
Run Code Online (Sandbox Code Playgroud)
由于我试图并行运行作业并使用输出,我想找到一种方法来沉默bash.有没有办法删除这个多余的输出?
我正在从网上抓取数据,并且我有几个并行运行刮刀的过程.
我希望每个进程的输出最终都在同一个文件中.只要文本行保持完整并且不会相互混淆,行的顺序无关紧要.在UNIX中,我可以使用>>运算符将每个进程的输出管道传输到同一个文件吗?
我知道现在大多数处理器都有两个或更多内核,多核编程风靡一时.是否有在Java中使用它的功能?我知道Java有一个Thread类,但我也知道这在很长一段时间之后才开始流行.如果我可以在Java中使用多个内核,我会使用哪种类/技术?
我们如何在Java中进行并行编程?那有什么特别的框架吗?我们怎样才能使这些东西有效?
我会告诉你们我需要什么,认为我开发了一个网络爬虫,它从互联网爬行很多网站,一个系统爬行不会让事情正常工作,所以我们需要1000个系统来工作,如果这是我可以应用并行计算吗?你们能给我一个正确的例子吗?
什么是在python 2.7中进行并行处理的简单代码?我在网上找到的所有例子都很复杂,包括不必要的代码.
我怎么做一个简单的强力整数分解程序,我可以在每个核心(4)上计算1个整数?我的真实程序可能只需要2个核心,并且需要共享信息.
我知道parallel-python和其他库存在,但我想将库的数量保持在最低限度,因此我想使用thread和/或multiprocessing库,因为它们带有python
我最近有一台带有多个内核的计算机,我正在学习使用并行计算.我非常精通lapply并被告知parLapply工作非常相似.我虽然没有正确操作.似乎我必须明确地将所有内容放在其中parLapply以使其工作(即要使用的函数,变量等).使用lapply它从父环境读取,parLapply似乎不这样做.所以在我下面的例子中,我可以通过将所有信息放在里面来使一切工作,parLapply但如果我在用户定义的函数中使用它,我就无法明确地放入text.var其中parLapply.
library(parallel)
text.var <- rep("I like cake and ice cream so much!", 20)
ntv <- length(text.var)
gc.rate <- 10
pos <- function(i) {
paste(sapply(strsplit(tolower(i), " "), nchar), collapse=" | ")
}
lapply(seq_len(ntv), function(i) {
x <- pos(text.var[i])
if (i%%gc.rate==0) gc()
return(x)
}
)
#doesn't work
cl <- makeCluster(mc <- getOption("cl.cores", 4))
parLapply(cl, seq_len(ntv), function(i) {
x <- pos(text.var[i])
if (i%%gc.rate==0) gc()
return(x)
}
) …Run Code Online (Sandbox Code Playgroud) 我试图确定何时使用该parallel程序包来加快运行某些分析所需的时间.我需要做的一件事是创建矩阵,比较具有不同行数的两个数据帧中的变量.我问了一个关于在StackOverflow上做有效方法的问题,并在我的博客上写了关于测试的文章.由于我对最佳方法感到满意,因此我希望通过并行运行来加快这一过程.以下结果基于带有8GB RAM的2ghz i7 Mac.令我感到惊讶的是,特别是功能parallel包parSapply比使用该apply功能更糟糕.复制它的代码如下.请注意,我目前只使用我创建的两个列中的一个,但最终想要同时使用它们.
执行时间http://jason.bryer.org/images/ParalleVsApplyTiming.png
require(parallel)
require(ggplot2)
require(reshape2)
set.seed(2112)
results <- list()
sizes <- seq(1000, 30000, by=5000)
pb <- txtProgressBar(min=0, max=length(sizes), style=3)
for(cnt in 1:length(sizes)) {
i <- sizes[cnt]
df1 <- data.frame(row.names=1:i,
var1=sample(c(TRUE,FALSE), i, replace=TRUE),
var2=sample(1:10, i, replace=TRUE) )
df2 <- data.frame(row.names=(i + 1):(i + i),
var1=sample(c(TRUE,FALSE), i, replace=TRUE),
var2=sample(1:10, i, replace=TRUE))
tm1 <- system.time({
df6 <- sapply(df2$var1, FUN=function(x) { x == df1$var1 })
dimnames(df6) <- …Run Code Online (Sandbox Code Playgroud) 在这篇文章之后:R中的multicore和data.table,我想知道在使用data.table时是否有办法使用所有核心,通常按组进行计算可以并行化.似乎plyr允许通过设计进行此类操作.
我最近发现dask模块旨在成为一个易于使用的python并行处理模块.对我来说最大的卖点是它与熊猫一起使用.
在其手册页上阅读了一下之后,我找不到办法完成这个简单的可并行化任务:
ts.apply(func) # for pandas series
df.apply(func, axis = 1) # for pandas DF row apply
Run Code Online (Sandbox Code Playgroud)
目前,要在dask,AFAIK实现这一目标,
ddf.assign(A=lambda df: df.apply(func, axis=1)).compute() # dask DataFrame
Run Code Online (Sandbox Code Playgroud)
这是一种丑陋的语法,实际上比直接慢
df.apply(func, axis = 1) # for pandas DF row apply
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
编辑:感谢@MRocklin的地图功能.它似乎比普通的大熊猫慢.这是与熊猫GIL发布问题有关还是我做错了?
import dask.dataframe as dd
s = pd.Series([10000]*120)
ds = dd.from_pandas(s, npartitions = 3)
def slow_func(k):
A = np.random.normal(size = k) # k = 10000
s = 0
for a in A:
if a > 0:
s += 1
else:
s …Run Code Online (Sandbox Code Playgroud)