标签: parallel-processing

从大文件中分块数据进行多处理?

我正在尝试使用多处理并行化应用程序,该应用程序接收一个非常大的csv文件(64MB到500MB),一些工作逐行,然后输出一个小的,固定大小的文件.

目前我做了一个list(file_obj),不幸的是,它被完全加载到内存中(我认为)然后我将该列表分成n个部分,n是我想要运行的进程数.然后我pool.map()在破碎的清单上做了一个.

与单线程,只是打开文件和迭代的方法相比,这似乎有一个非常非常糟糕的运行时.有人可以建议更好的解决方案?

另外,我需要以组的形式处理文件的行,这些行保留了某个列的值.这些行组本身可以拆分,但任何组都不应包含此列的多个值.

python parallel-processing

16
推荐指数
1
解决办法
1万
查看次数

尝试与Selenium并行自动化,但多个webdriver实例吓坏了

所以我正在尝试创建一个使用Selenium自动化WebDriver在网站上执行任务的java程序.目前,我正在使用它进行工作,以便自动执行烦人的任务,用户必须将文件上传到我们的数据库.我已经成功地制作了一个自动执行此程序的程序,并节省了数小时的手动工作.

现在我想让程序并行运行多个浏览器.我想这样做是为了加快我上传文件的速度,因为大部分时间都在等待页面加载.

我用一个更简单的程序版本对此进行了测试,并通过使用自己的WebDrivers打开了数十到数百个线程,设法将简单任务加速了2-10倍.

问题是,每当我运行超过1个 WebDriver时,整个事情有时会开始随机发生,而在其他时候根本不起作用.我尝试使用'PhantomJSDriver'和最新的'PhantomJS.exe',但有时它会起作用,而且大多数时候它什么都不做.与一个驱动程序运行完美运行的相同程序在并行运行时会发生故障.

我一直试图找到原因,为什么会发生这种情况以及解决这个问题的方法,但我还没有找到任何可以使用的确定方法.

如果可能的话,我如何与Selenium并行进行自动化网页浏览,如果没有,为了做到这一点,我应该在哪里寻找?

parallel-processing selenium webdriver phantomjs

16
推荐指数
1
解决办法
2万
查看次数

Parallel.ForEach 和等待 ForEachAsync 之间的差异

在任何情况下是否有理由选择 Parallel.ForEach 而不是 wait ForEachAsync(反之亦然)?或者它们实际上是相同的?

await collection.ForEachAsync( m => { m.DoSomething(); } );
Run Code Online (Sandbox Code Playgroud)

VS

Parallel.ForEach( collection, m => { m.DoSomething(); } );
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing parallel.foreach

16
推荐指数
2
解决办法
6886
查看次数

如何检索C/Linux上的处理器数量?

我正在编写一个小型C应用程序,它使用一些线程来处理数据.我希望能够知道某台机器上的处理器数量,而不使用system()和小脚本.

我能想到的唯一方法是解析/ proc/cpuinfo.任何其他有用的建议?

c parallel-processing posix

15
推荐指数
2
解决办法
2万
查看次数

Async.js - 并行真正平行吗?

据我所知到目前为止:Javascript是单线程的.如果您推迟执行某些过程,则只需安排它(将其排队)以在下次线程空闲时运行.但Async.js定义了两种方法:Async::parallel & Async::parallelLimit和我引用:

  • 并行(任务,[回调])

并行运行一系列函数,无需等到上一个函数完成.如果任何函数将错误传递给其回调...

  • parallelLimit(tasks,limit,[callback])

与并行相同,只有任务与任何时间执行的最大"限制"任务并行执行.

至于我对英语的理解,当你说:"并行完成任务"意味着同时进行 - 同时进行.

Async.js如何在一个线程中并行执行任务?我错过了什么.

javascript parallel-processing asynchronous node.js async.js

15
推荐指数
1
解决办法
4507
查看次数

如何调整风暴中的并行性提示

"并行性提示"在风暴中用于并行运行的风暴拓扑.我知道有工作流程,执行者和任务等概念.使并行性提示尽可能大有意义,以便尽可能地并行化拓扑?

我的问题是如何为我的风暴拓扑找到一个完美的并行性提示数.它取决于我的风暴群集的规模,还是更像拓扑/作业特定设置,它从一种拓扑到另一种不同?还是取决于两者?

parallel-processing apache-storm

15
推荐指数
2
解决办法
1万
查看次数

doParallel"foreach"不一致地从父环境继承对象:"{:task 1 failed - "中的错误找不到函数......"

我有一个foreach的问题,我无法搞清楚.以下代码在我尝试过的两台Windows计算机上失败,但在三台Linux计算机上运行成功,所有这些都运行相同版本的R和doParallel:

library("doParallel")
registerDoParallel(cl=2,cores=2)

f <- function(){return(10)}
g <- function(){
    r = foreach(x = 1:4) %dopar% {
        return(x + f())
    }
    return(r)
}
g()
Run Code Online (Sandbox Code Playgroud)

在这两台Windows计算机上,返回以下错误:

Error in { : task 1 failed - "could not find function "f""
Run Code Online (Sandbox Code Playgroud)

但是,这在Linux计算机上运行得很好,并且使用%do%而不是%dopar%也可以正常工作,并且适用于常规for循环.

同样是变量,如设置真正的i <- 10和更换return(x + f())return(x + i)

对于具有相同问题的其他人,有两种解决方法:

1)使用.export显式导入所需的函数和变量:

r = foreach(x=1:4, .export="f") %dopar% 
Run Code Online (Sandbox Code Playgroud)

2)导入所有全局对象:

r = foreach(x=1:4, .export=ls(.GlobalEnv)) %dopar% 
Run Code Online (Sandbox Code Playgroud)

这些变通方法的问题在于,对于一​​个积极开发的大型软件包来说,它们并不是最稳定的.无论如何,foreach应该表现得像.

是什么导致了这个以及是否有修复的想法?


该功能的计算机版本信息:

R version 3.2.2 (2015-08-14)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: CentOS release 6.5 (Final)

other …
Run Code Online (Sandbox Code Playgroud)

parallel-processing foreach r doparallel

15
推荐指数
2
解决办法
9267
查看次数

R - 并行化多模型学习(使用dplyr和purrr)

这是关于学习多个模型的先前问题的后续跟进.

用例是我对每个主题都有多个观察结果,我想为每个主题训练一个模型.请参阅哈德利关于如何做到这一点的精彩演讲.

简而言之,这可以使用dplyrpurrr喜欢这样:

library(purrr)
library(dplyr)
library(fitdistrplus)
dt %>% 
    split(dt$subject_id) %>%
    map( ~ fitdist(.$observation, "norm")) 
Run Code Online (Sandbox Code Playgroud)

如此以来,建立模型是一个尴尬的并行任务,我在想,如果dplyr,purrr有一个易于使用的此类任务并行机制(如平行map).

如果这些库不提供易于并行化可以把它采用了经典的[R并行库(做parallel,foreach等)?

parallel-processing r dplyr purrr

15
推荐指数
2
解决办法
2841
查看次数

如果调用是在一个单独的方法中,为什么Parallel.Invoke要快得多?

我实施了3次QuickSort算法并测量了5000万随机数的排序时间:

  1. 顺序(花了~14秒)

  2. Parallel.Invoke()相同的方法作为排序算法(使用了〜12秒)

  3. Parallel.Invoke()单独的方法(使用了约7秒)的

所以我的问题是:Parallel.Invoke()如果呼叫是在一个单独的方法中,为什么会快得多?在我的计算机上,3.示例的速度是2的两倍多.

2. Parallel.Invoke()相同的方法作为排序算法

public class ParallelQuickSort
{

    private const int Threshold = 100;

    public static void Sort(int[] array)
    {
        if (array == null || array.Length == 0)
        {
            new ArgumentException("number array must be at least of length 1");
        }
        QuickSort(array, 0, array.Length - 1);
    }

    private static void QuickSort(int[] array, int left, int right)
    {
        var i = left;
        var j = right; …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing quicksort .net-core

15
推荐指数
2
解决办法
275
查看次数

当要并行执行的功能位于其他文件中时,并行代码不起作用

我有一个想要并行运行的简单函数。如果直接在主函数中指定了该函数,则一切正常。但是,如果从单独的Python文件(该文件创建为包含一系列帮助函数)中调用了完全相同的函数,则代码将失败,并显示以下错误:

任务无法反序列化。请确保函数的参数都是可挑剔的。

我试图运行此代码:

from joblib import Parallel, delayed
import multiprocessing
import otherFile as of

inputs = range(10) 
def processInput(i):
    return i * i

num_cores = multiprocessing.cpu_count()

results1 = Parallel(n_jobs=num_cores)(delayed(processInput)(i) for i in inputs) # this works
results2 = Parallel(n_jobs=num_cores)(delayed(of.processInput)(i) for i in inputs) # this fails
Run Code Online (Sandbox Code Playgroud)

当我从文件的调用函数processInput()时,我只是在该.py文件中复制了相同的函数。

def processInput(i):
    return i * i
Run Code Online (Sandbox Code Playgroud)

如果需要调用的函数位于单独的.py文件中,如何使并行化工作?

这是完整的错误:

results = Parallel(n_jobs=num_cores)(delayed(of.processInput)(i) for i in inputs)
Traceback (most recent call last):

  File "<ipython-input-387-d8dd1dc361a6>", line 1, in <module>
    results = Parallel(n_jobs=num_cores)(delayed(of.processInput)(i) for i in inputs) …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing multiprocessing

15
推荐指数
1
解决办法
436
查看次数