标签: parallel-processing

是否有 scipy.optimize.minimize 的并行版本?

我正在尝试使用 最小化成本函数scipy.optimize.minimize,但速度非常慢。我的函数有接近 5000 个变量,所以 scipy 很慢也就不足为奇了。但是,如果有它的并行版本scipy.optimize.minimize可能会有很大帮助。

我想知道这样的版本是否scipy.optimize.minimize存在,或者是否有任何其他 scipy/numpy 工具可用于执行这种量级的最小化。我真的很感激任何和所有的帮助。

谢谢大家的意见。这是使用 SLSQP 求解器的约束最小化。我已经花了很多时间来确保成本函数计算得到优化,所以问题一定是在计算梯度或由于约束。换句话说,花在函数评估上的时间只占最小化总时间的一小部分。

python parallel-processing numpy mathematical-optimization scipy

5
推荐指数
1
解决办法
2458
查看次数

在python3中的线程内运行多个并行作业

我有两个函数func1()func2()它们相互独立,可以在两个线程中运行。我正在使用threadingpython3来运行这两个线程。不过里面func1(),我运行for使用并行循环joblib。因此,使用线程以及 joblib 会给出以下警告 -

/usr/local/lib/python3.6/dist-packages/joblib/parallel.py:547: UserWarning: Multiprocessing-backed parallel loops cannot be nested below threads, setting n_jobs=1,

然后里面的 for 循环func1()只是按顺序运行。

以下是代码片段的示例:

from joblib import Parallel, delayed
import threading
from math import sqrt

class MyThread(threading.Thread):
    def __init__(self, sample, type):
        threading.Thread.__init__(self)
        self.type = type
        self.sample = sample
    def run(self):
        if self.type=='func1':
            self.sample.func1()
        else:
            self.sample.func2()

class Sample:
   def func1(self):
       print('this function runs for …
Run Code Online (Sandbox Code Playgroud)

parallel-processing python-multithreading joblib python-3.6

5
推荐指数
0
解决办法
530
查看次数

java CompletableFuture.thenCombine 返回 CompletableFuture 的 CompletableFuture

我的应用程序中有 3 种不同的方法。都回来了CompletableFuture<SomeType>。我想并行执行方法 1 和方法 2。完成方法 1 和方法 2 后,我想使用方法 1 和方法 2 返回值的参数触发方法 3。

代码示例:

CompletableFuture<Request> future1 = RequestConverter.Convert(requestDto);
CompletableFuture<String> future2 = tokenProvider.getAuthToken();

CompletableFuture<CompletableFuture<String>> future3 = 
future1.thenCombine(future2,(request,token) -> 
requestProcessor.Process(request,token)); 
Run Code Online (Sandbox Code Playgroud)

但是,与上面的代码的问题是,我得到一个CompletableFutureCompletableFuture。我想避免这种情况并获得简单CompletableFuture<String>而不阻塞。这可能吗?

java parallel-processing nonblocking chaining completable-future

5
推荐指数
2
解决办法
2767
查看次数

Windows.Web.Http.HttpClient 抛出 COMException c#

Windows.Web.Http.HttpClient在我的 UWP Windows 10 应用程序中使用。我HttpClient在我的应用程序中创建了一个实例,并为所有 HTTP 调用重新使用连接。一切正常,除了并行 HTTP 调用。

每当我发起并行 HTTP 请求时,并行线程第一次抛出以下 COMException。我捕获了这个异常并重新发送 http 调用,它成功了。过了一会儿,如果我再次启动并行线程,它又失败了。

抛出异常:System.Private.CoreLib.dll 中的“System.Runtime.InteropServices.COMException”

WinRT 信息:并发或交错操作更改了对象的状态,使此操作无效。

尝试冲浪,但无法获得解决方案。有没有人遇到过这个问题并得到解决方案?

这是代码示例:

httpClient 是一个可重用的实例。

       var response = await httpClient.SendRequestAsync(reqMsg).AsTask(cts.Token);
        if (response.IsSuccessStatusCode)
        {
            if (isBufferResponseRequired)
            {
                return await response.Content.ReadAsBufferAsync();
            }
            else
            {
                return await response.Content.ReadAsStringAsync();
            }
        }
Run Code Online (Sandbox Code Playgroud)

我使用 Tasks.Run() 创建多个线程并并行访问 httpClient。

c# windows parallel-processing comexception uwp

5
推荐指数
1
解决办法
333
查看次数

R 是否在启动时创建了太多线程

每次调用 R 都会创建 63 个子进程

Rscript --vanilla  -e 'Sys.sleep(5)' &  pstree -p $! | grep -c '{R}'
# 63
Run Code Online (Sandbox Code Playgroud)

哪里pstree看起来像这样

R(2562809)???{R}(2562818)                                                                                                                                                     
           ??{R}(2562819)
           ...
           ??{R}(2562878)
           ??{R}(2562879)
           ??{R}(2562880)
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?

这是一台带有 debian 9.3、R 3.4.3、blas 3.7.0 和 openmp 2.0.2 的 72 核机器

dpkg-query -l '*blas*' 'r-base' '*lapack*' '*openmp*'|grep ^ii
ii  libblas-common     3.7.0-2                    amd64        Dependency package for all BLAS implementations
ii  libblas-dev        3.7.0-2                    amd64        Basic Linear Algebra Subroutines 3, static library
ii  libblas3           3.7.0-2                    amd64        Basic Linear Algebra Reference implementations, shared library
ii …
Run Code Online (Sandbox Code Playgroud)

parallel-processing r blas lapack

5
推荐指数
1
解决办法
886
查看次数

如何在 xUnit 中执行全局设置/拆卸并并行运行测试?

这是我想用 xUnit 实现的目标:

  1. 运行初始化代码。
  2. 并行运行测试。
  3. 执行拆解。

我已经尝试过这里描述的[CollectionDefinition]/[Collection]/ICollectionFixture 方法但它禁用了并行执行,这对我来说至关重要。

有没有办法并行运行测试并能够在 xUnit 中编写全局设置/拆卸代码?

如果 xUnit 无法实现,NUnit 或 MSUnit 是否支持这种情况?

c# parallel-processing nunit initialization xunit

5
推荐指数
1
解决办法
2283
查看次数

Python:在并行编程方面,“Celery”库和“Multiprocessing”库之间的最大区别是什么?

我认为所有可以使用的任务celery也可以通过multiprocessing库来完成。

尽管这样,不知道为什么一个应用celery,而不是multiprocessing在Python程序或Web框架,如djangoflask等。

python parallel-processing multiprocessing celery python-multiprocessing

5
推荐指数
0
解决办法
1027
查看次数

我可以从多个进程/线程写入 HDF5 文件吗?

hdf5 是否支持从不同线程或不同进程并行写入同一文件?或者,hdf5 是否支持非阻塞写入?

如果是这样,那么 NetCDF4 和 python 绑定是否也支持它?

我正在编写一个应用程序,我希望不同的 CPU 内核同时计算用于非常大输出阵列的非重叠图块的输出。(稍后我想从它读取部分作为单个数组,不需要我自己的驱动程序来管理索引许多单独的文件,理想情况下不需要在磁盘上重新排列它的额外 IO 任务。)

python parallel-processing hdf5 bigdata netcdf4

5
推荐指数
1
解决办法
3273
查看次数

如何在 Python 中将 for 循环转换为并行处理?

我还处于 Python 学习的早期阶段。如果这个问题听起来很愚蠢,请提前道歉。

我有这组数据(表格格式),我想向其中添加几个计算列。基本上我有一些位置 lon/lat 和目的地 lon/lat,以及各自的数据时间,我正在计算每对之间的平均速度。

示例数据如下所示:

print(data_all.head(3))

   id    lon_evnt   lat_evnt          event_time  \
0   1 -179.942833  41.012467 2017-12-13 21:17:54   
1   2 -177.552817  41.416400 2017-12-14 03:16:00   
2   3 -175.096567  41.403650 2017-12-14 09:14:06   

  dest_data_generate_time   lat_dest    lon_dest  \
0 2017-12-13 22:33:37.980  37.798599 -121.292193   
1 2017-12-14 04:33:44.393  37.798599 -121.292193   
2 2017-12-14 10:33:51.629  37.798599 -121.292193  

                             address_fields_dest  \
0  {'address': 'Nestle Way', 'city': 'Lathrop...      
1  {'address': 'Nestle Way', 'city': 'Lathrop...      
2  {'address': 'Nestle Way', 'city': 'Lathrop...      
Run Code Online (Sandbox Code Playgroud)

然后我将 lon/lat 压缩在一起:

data_all['ping_location'] = list(zip(data_all.lon_evnt, data_all.lat_evnt))
data_all['destination'] = …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing pandas

5
推荐指数
1
解决办法
9904
查看次数

如何使用 dask 有效地并行化时间序列预测?

我正在尝试使用 dask 在 python 中并行化时间序列预测。数据的格式是每个时间序列都是一列,它们有一个共同的每月日期索引。我有一个自定义预测函数,它返回一个包含拟合值和预测值的时间序列对象。我想在数据帧的所有列(所有时间序列)中应用这个函数,并返回一个新的数据帧,其中包含所有这些要上传到数据库的系列。我已经通过运行使代码工作:

data = pandas_df.copy()
ddata = dd.from_pandas(data, npartitions=1)
res = ddata.map_partitions(lambda df: df.apply(forecast_func, 
    axis=0)).compute(get=dask.multiprocessing.get)
Run Code Online (Sandbox Code Playgroud)

我的问题是,在 Dask 中是否有一种方法可以按列而不是按行进行分区,因为在这个用例中,我需要保持有序的时间索引,以便预测功能正常工作。

如果没有,我将如何重新格式化数据以实现高效的大规模预测,并且仍然以我需要的格式返回数据然后推送到数据库?

数据格式示例

python parallel-processing time-series forecasting dask

5
推荐指数
1
解决办法
2068
查看次数