python 计算时间差秒

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 计算时间差秒相关的知识,希望对你有一定的参考价值。

我想输入一个时间 比如 2012-10-15 10:09:01 ,然后在算出当前系统时间,求出他们的差值,求出他们差了多少秒
我想让datetime.datetime.now() 算出来的时间不包含微秒,该怎么办?

a = datetime.datetime.now() # 结果是 2012-10-19 09:29:39.725000
b = datetime.datetime.strptime('2012-10-15 10:09:01', '%Y-%m-%d %H:%M:%S')
#结果是2012-10-15 10:09:01
print (a-b).seconds #它的结果会测试会差一秒,应该是有微秒的原因导致差一秒
请问该怎么把 now 的微秒给去掉?

python 计算时间差秒:

Q:如何方便的计算两个时间的差,如两个时间相差几天,几小时等
A:使用datetime模块可以很方便的解决这个问题,举例如下:

上例演示了计算两个日期相差天数的计算。

上例演示了计算运行时间的例子,以秒进行显示。

上例演示了计算当前时间向后10小时的时间。

其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;timedelta可以查看:天数(days),秒数(seconds)等。

参考技术A

python 计算时间差秒:

Q:如何方便的计算两个时间的差,如两个时间相差几天,几小时等
A:使用datetime模块可以很方便的解决这个问题,举例如下:

上例演示了计算两个日期相差天数的计算。

上例演示了计算运行时间的例子,以秒进行显示。

上例演示了计算当前时间向后10小时的时间。

拓展:其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;timedelta可以查看:天数(days),秒数(seconds)等。

参考技术B t1 = datetime.datetime.strptime('2012-10-15 10:09:01', '%Y-%m-%d %H:%M:%S')
t2 = datetime.datetime.now()
print t1-t2追问

我想让datetime.datetime.now() 算出来的时间不包含微秒,该怎么办?

追答

结果 除以1000就好了

追问

怎么除呢? 能给个具体点的例子么,直接算出时间差多少秒,谢谢

Python加速奇异值分解

【中文标题】Python加速奇异值分解【英文标题】:Python accelerate singular value decomposition 【发布时间】:2022-01-09 22:43:00 【问题描述】:

我想计算 3D 矩阵的每个切片的奇异值分解。

我使用 numpy 和 scipy 来计算 SVD,但它们都比 MATLAB 实现慢得多。 numpy 和 scipy 版本大约需要 7 秒,而 MATLAB 版本只需要 0.7 秒。

有没有办法在 Python 中加速 SVD 计算?

Python

import time
import scipy.linalg
import numpy.linalg

A = np.random.rand(100, 100, 1000) + 1j * np.random.rand(100, 100, 1000)
S = np.empty((A.shape[2], min(A.shape[0:1])))

t1 = time.time()
for i in range(A.shape[2]):
    S[i, :] = numpy.linalg.svd(A[:, :, i], compute_uv=False)
print("[numpy] Elapsed time: :.3f s".format(time.time() - t1))

t1 = time.time()
for i in range(A.shape[2]):
    S[i, :] = scipy.linalg.svdvals(A[:, :, i])
print("[scipy] Elapsed time: :.3f s".format(time.time() - t1))

# [numpy] Elapsed time: 7.137 s
# [scipy] Elapsed time: 7.435 s

MATLAB

A = randn(100, 100, 1000) + 1j * randn(100, 100, 1000);
S = nan(size(A,3), min(size(A, [1 2])));
tic;
for i = 1:size(A, 3)
    S(i, :) = svd(A(:,:,i));
end
toc;
% Elapsed time is 0.702556 seconds.

这是np.show_config()的输出:

blas_mkl_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
openblas_info:
    library_dirs = ['D:\\a\\1\\s\\numpy\\build\\openblas_info']
    libraries = ['openblas_info']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    library_dirs = ['D:\\a\\1\\s\\numpy\\build\\openblas_info']
    libraries = ['openblas_info']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
  NOT AVAILABLE
openblas_lapack_info:
    library_dirs = ['D:\\a\\1\\s\\numpy\\build\\openblas_lapack_info']
    libraries = ['openblas_lapack_info']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
    library_dirs = ['D:\\a\\1\\s\\numpy\\build\\openblas_lapack_info']
    libraries = ['openblas_lapack_info']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
Supported SIMD extensions in this NumPy install:
    baseline = SSE,SSE2,SSE3
    found = SSSE3,SSE41,POPCNT,SSE42,AVX,F16C,FMA3,AVX2,AVX512F,AVX512CD,AVX512_SKX
    not found = AVX512_CLX,AVX512_CNL
None

【问题讨论】:

scipy 和 numpy 都调用 LAPACK 例程来计算 SVD,因此性能在很大程度上取决于链接 scipy/numpy 的 LAPACK 实现。为了比较:我在我的机器上使用 OpenBLAS 获得 1.3s (scipy/numpy) vs 0.8s (Matlab)。 Matlab 使用英特尔 MKL,因此您可以从源代码构建 scipy/numpy 并将其与英特尔 MKL 链接以获得相同的性能。 【参考方案1】:

我不确定这是否能解决您的问题,但您不需要循环任何内容,因为 np.linalg.svd() already handles n-dimensional arrays。 (即使没有,你基本上也不需要 NumPy 中的循环。)

这就是我将如何做你正在做的事情:

import time
import numpy as np
import numpy.linalg as la

shape = (100, 100, 1000)
rng = np.random.default_rng(42)
A = rng.random(shape) + 1j * rng.random(shape)

t1 = time.perf_counter()
S = la.svd(A.T, compute_uv=False)
t2 = time.perf_counter()

print(f"[numpy] Elapsed time: t2 - t1:.3f s")

在我的计算机上,这需要 0.83 秒(使用 Intel MKL)。不过我没有尝试你的 MATLAB 代码,所以我不确定这是否会为你加快速度。

【讨论】:

这并没有加快计算速度,但还是很高兴知道。 @brnk Doh,对此感到抱歉...也许检查一下np.show_config() 看看它在 BLAS/LINPACK 中使用了什么? 我将np.show_config() 的输出添加到原始帖子中。是否可以使用 pip 安装基于英特尔 MKL 的 numpy 而无需构建它? 这是我舒适区的边缘:D 但看看这个:***.com/questions/21671040/… 谢谢,我安装了最新版本的 Anaconda,它带有一个预构建的 MKL 版本的 numpy。现在计算需要 0.68 秒【参考方案2】:

对于支持英特尔数学内核库 (MKL) 的计算机,通过安装使用 MKL 的 NumPy/SciPy 版本可以显着减少计算时间。感谢@joni 和@kwinkunks 提供这些信息

在我的例子中,计算时间从 OpenBLAS 的 7 秒减少到英特尔 MKL 的 0.68 秒

这可以通过根据以下教程通过源代码构建 NumPy 或 SciPy 来完成:Build NumPy/SciPy from Source

或者,安装带有预构建 MKL 支持的 NumPy 和 SciPy 版本的 Anaconda 平台可以简化这一过程。

【讨论】:

以上是关于python 计算时间差秒的主要内容,如果未能解决你的问题,请参考以下文章

python 计算时间差秒

如何根据python中的时间列每5秒计算一次平均值

Python将秒转换为 时分秒 的格式

Python模拟显示性能缓慢,如何加快数组计算

PHP如何计算两个时间之间相差多少时分秒

python计算时分秒 青少年编程电子学会python编程等级考试一级真题解析2020-12