如何在linux系统中,将python3.4更新到python3.5

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在linux系统中,将python3.4更新到python3.5相关的知识,希望对你有一定的参考价值。

参考技术A 推荐用py2exe将python脚本打包成exe可执行程序,就可以想windows程序一样运行了!

如何在 Linux 中检测系统时间的变化?

【中文标题】如何在 Linux 中检测系统时间的变化?【英文标题】:How to detect change of system time in Linux? 【发布时间】:2011-01-16 03:15:46 【问题描述】:

有没有办法在从时间服务器更新系统时间或由于 DST 更改时收到通知?我在进行 API/系统调用或等效调用。

在不使用 SQL 的情况下,将类似于 SQL NOW() 的值的生成优化到小时粒度是我努力的一部分。

【问题讨论】:

为什么不直接使用系统调用来获取需要的本地时间? @Romain:对我的应用来说太贵了。 另见***.com/questions/10496531/… 【参考方案1】:

您可以使用timerfd_create(2) 创建一个计时器,然后在设置时用TFD_TIMER_CANCEL_ON_SET 选项标记它。将其设置为将来不合理的时间,然后对其进行阻止(使用轮询/选择等)-如果系统时间发生更改,则计时器将被取消,您可以检测到。

(这是how systemd does it)

例如:

#include <sys/timerfd.h>
#include <limits.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>

int main(void) 
        int fd = timerfd_create(CLOCK_REALTIME, 0);
        timerfd_settime(fd, TFD_TIMER_ABSTIME | TFD_TIMER_CANCEL_ON_SET,
                        &(struct itimerspec) .it_value =  .tv_sec = INT_MAX  ,
                        NULL);
        printf("Waiting\n");
        char buffer[10];
        if (-1 == read(fd, &buffer, 10)) 
                if (errno == ECANCELED)
                        printf("Timer cancelled - system clock changed\n");
                else
                        perror("error");
        
        close(fd);
        return 0;

【讨论】:

这真的会随着夏令时的变化而触发吗? @HowardHinnant 就像 AProgrammer 在他的回复中所说的那样,DST 的变化(至少在我的情况下)结果并不那么重要。据我了解,如果您仅将时区信息用于演示并在 UTC 中进行所有操作,则 DST 更改应该是无关紧要的。【参考方案2】:

不知道有没有办法通知系统时间的变化,但是

系统时间存储为UTC,因此不会因DST更改而通知更改。

如果我没记错的话,NTP 守护进程通常会通过改变它的速度来调整时钟,同样不会通知任何变化。

因此,只有在不常见的操作之后才会通知您。

【讨论】:

【参考方案3】:

clock_gettime 在最新的 Linux 系统上非常快,而且通常也非常精确;您可以使用clock_getres 找出精度。但是对于小时级别的时间戳,gettimeofday 可能更方便,因为它可以为您调整时区。

只需调用适当的系统调用,并在每次需要时间戳时将其划分为小时;来自 NTP 的所有其他时间调整或已经为您完成的任何调整。

【讨论】:

以上是关于如何在linux系统中,将python3.4更新到python3.5的主要内容,如果未能解决你的问题,请参考以下文章

详解如何在 Linux 中安装最新的 Python 3.6 版本

linux系统如何自动更新?

如何在 Linux 中检测系统时间的变化?

如何在 Ubuntu Linux 上将 pymssql 安装到 Python 3.4 而不是 2.7?

linux更新到9.04后 系统管理中的“网络”没了

Python 3.5 更新失败后 Anaconda 根环境不一致