我正在尝试使用 最小化成本函数scipy.optimize.minimize,但速度非常慢。我的函数有接近 5000 个变量,所以 scipy 很慢也就不足为奇了。但是,如果有它的并行版本scipy.optimize.minimize可能会有很大帮助。
我想知道这样的版本是否scipy.optimize.minimize存在,或者是否有任何其他 scipy/numpy 工具可用于执行这种量级的最小化。我真的很感激任何和所有的帮助。
谢谢大家的意见。这是使用 SLSQP 求解器的约束最小化。我已经花了很多时间来确保成本函数计算得到优化,所以问题一定是在计算梯度或由于约束。换句话说,花在函数评估上的时间只占最小化总时间的一小部分。
python parallel-processing numpy mathematical-optimization scipy
我有两个函数func1(),func2()它们相互独立,可以在两个线程中运行。我正在使用threading库python3来运行这两个线程。不过里面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) 我的应用程序中有 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)
但是,与上面的代码的问题是,我得到一个CompletableFuture的CompletableFuture。我想避免这种情况并获得简单CompletableFuture<String>而不阻塞。这可能吗?
java parallel-processing nonblocking chaining completable-future
我Windows.Web.Http.HttpClient在我的 UWP Windows 10 应用程序中使用。我HttpClient在我的应用程序中创建了一个实例,并为所有 HTTP 调用重新使用连接。一切正常,除了并行 HTTP 调用。
每当我发起并行 HTTP 请求时,并行线程第一次抛出以下 COMException。我捕获了这个异常并重新发送 http 调用,它成功了。过了一会儿,如果我再次启动并行线程,它又失败了。
抛出异常:System.Private.CoreLib.dll 中的“System.Runtime.InteropServices.COMException”
WinRT 信息:并发或交错操作更改了对象的状态,使此操作无效。
尝试冲浪,但无法获得解决方案。有没有人遇到过这个问题并得到解决方案?
这是代码示例:
httpClient 是一个可重用的实例。
Run Code Online (Sandbox Code Playgroud)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(); } }我使用 Tasks.Run() 创建多个线程并并行访问 httpClient。
每次调用 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) 我认为所有可以使用的任务celery也可以通过multiprocessing库来完成。
尽管这样,不知道为什么一个应用celery,而不是multiprocessing在Python程序或Web框架,如django,flask等。
python parallel-processing multiprocessing celery python-multiprocessing
hdf5 是否支持从不同线程或不同进程并行写入同一文件?或者,hdf5 是否支持非阻塞写入?
如果是这样,那么 NetCDF4 和 python 绑定是否也支持它?
我正在编写一个应用程序,我希望不同的 CPU 内核同时计算用于非常大输出阵列的非重叠图块的输出。(稍后我想从它读取部分作为单个数组,不需要我自己的驱动程序来管理索引许多单独的文件,理想情况下不需要在磁盘上重新排列它的额外 IO 任务。)
我还处于 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) 我正在尝试使用 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 ×5
c# ×2
bigdata ×1
blas ×1
celery ×1
chaining ×1
comexception ×1
dask ×1
forecasting ×1
hdf5 ×1
java ×1
joblib ×1
lapack ×1
netcdf4 ×1
nonblocking ×1
numpy ×1
nunit ×1
pandas ×1
python-3.6 ×1
r ×1
scipy ×1
time-series ×1
uwp ×1
windows ×1
xunit ×1