GVKun编程网logo

Python-产生时差

14

在本文中,我们将为您详细介绍Python-产生时差的相关知识,此外,我们还会提供一些关于AnacondaPython3.6–pythonw和python应该是等价的吗?、Go对Python产生的冲击、

在本文中,我们将为您详细介绍Python-产生时差的相关知识,此外,我们还会提供一些关于Anaconda Python 3.6 – pythonw和python应该是等价的吗?、Go 对 Python 产生的冲击、IronPython的任何替代品,Python for .NET用于从python访问CLR?、python 2(而不是python 3)作为(临时)默认python?的有用信息。

本文目录一览:

Python-产生时差

Python-产生时差

我正在尝试为使用情况统计信息生成报告。以下是我在数组中存储的示例数据,这是从Mysql表中获取的。如何实现一个逻辑,即如果用户闲置超过30分钟,没有使用过系统,否则计算使用时间的平均时间。

timestamp=[]for i in timestamp:   print i         2010-04-20 10:07:30        2010-04-20 10:07:38        2010-04-20 10:07:52        2010-04-20 10:08:22        2010-04-20 10:08:22        2010-04-20 10:09:46        2010-04-20 10:10:37        2010-04-20 10:10:58        2010-04-20 10:11:50        2010-04-20 10:12:13        2010-04-20 10:12:13        2010-04-20 10:25:38        2010-04-20 10:26:01        2010-04-20 10:26:01        2010-04-20 10:26:06        2010-04-20 10:26:29        2010-04-20 10:26:29        2010-04-20 10:26:35        2010-04-20 10:27:21        2010-04-20 01:32:46        2010-04-20 01:32:47        2010-04-20 01:32:57        2010-04-20 01:32:59        2010-04-20 01:33:03        2010-04-20 01:33:03        2010-04-20 01:33:05        2010-04-20 01:33:11        2010-04-20 01:33:15        2010-04-20 01:34:49        2010-04-20 01:34:55        2010-04-20 01:35:02        2010-04-20 01:35:17        2010-04-20 01:35:20        2010-04-20 01:36:49        2010-04-20 01:36:52        2010-04-20 01:36:52        2010-04-20 01:37:11        2010-04-20 01:37:15        2010-04-20 01:37:17        2010-04-20 01:50:11        2010-04-20 01:50:15        2010-04-20 01:50:18        2010-04-20 01:50:20        2010-04-20 01:50:33        2010-04-20 01:50:36        2010-04-20 01:51:56

答案1

小编典典

我想这就是你想要的。它遍历列表,计算每个条目与上一个条目之间的差异。如果差异大于或等于30分钟,它将忽略它。如果少于30分钟,则会将其添加到该用户的总使用量中。(我假设所有时间戳都是针对同一用户的。)

from datetime import datetime,timedelta# Convert the timestamps to datetime objectsusetimes = sorted(datetime.strptime(d, ''%Y-%m-%d %H:%M:%S'') for d in timestamp)# Set the idle time to compare with lateridletime = timedelta(minutes = 30)# Start the running total with a timedelta of 0usage = timedelta()last = usetimes[0]for d in usetimes[1:]:    delta = d - last    if delta < idletime:        usage += delta    last = dprint "total usage:",usage

如果您想使用sum()并且zip()可以减少代码行,但是我不确定它是否可读:

from datetime import datetime,timedeltausetimes = sorted(datetime.strptime(d, ''%Y-%m-%d %H:%M:%S'') for d in timestamp)idletime = timedelta(minutes = 30)usage = sum((x - y for x,y in zip(usetimes[1:],usetimes[:-1]) if x - y < idletime),timedelta())print "total usage:", usage

在这种情况下,如果时间戳列表很长,您可以考虑使用izipfromitertools代替zip

Anaconda Python 3.6 – pythonw和python应该是等价的吗?

Anaconda Python 3.6 – pythonw和python应该是等价的吗?

根据 Python 3文档,python和pythonw应该等同于运行GUI脚本 as of 3.6

With older versions of Python,there is one Mac OS X quirk that you need to be aware of: programs that talk to the Aqua window manager (in other words,anything that has a GUI) need to be run in a special way. Use pythonw instead of python to start such scripts.

With Python 3.6,you can use either python or pythonw.

但是,我刚刚使用Python 3.6安装了Anaconda,如果我尝试使用python而不是pythonw运行我的wxPython GUI,我仍然会得到非框架构建错误:

This program needs access to the screen. Please run with a
Framework build of python,and only when you are logged in
on the main display of your Mac.

这里发生了什么?为什么这个错误仍然存​​在?

我使用的Python版本是:

Python 3.6.0 :: Anaconda 4.3.1 (x86_64)

解决方法

答案可以在这里找到: How to use a framework build of Python with Anaconda

简而言之,使用命令

conda install python.app

和pythonw将被安装.

Go 对 Python 产生的冲击

Go 对 Python 产生的冲击

Go 的流行让以 Python 为主流语言的开发者(比如我)产生了一定的危机感。上一次有这种危机感还是做 Android 开发的时候,当时用 Java 做 Android 开发,Google 强推 Kotlin 让我有比较强的危机感,加了很多 Android 开发者交流群,大家都说工作难找,后来我就转 Python 了。

就目前观察而言,Python 的流行不会那么快的衰减,很多非开发人员会以 Python 作为首门编程语言来学习,Python 简单上手的特点在这里发挥出巨大的优势,但了解的越深会体会到 Python 在工程方面的乏力,一个很具体的例子就是 Web 方面,虽然最近出现了测试覆盖率 100% 的 FastApi 框架,但整体形势依旧不太乐观。

Python 的异步机制一直让人诟病,听过多位资深 Python 开发者吐槽 Python 在 asyncio 上存在的问题,就我了解而言,很少有公司会在生成环境使用 asyncio,太多迷惑行为以及限制了,目前生产环境要用异步,依旧首选 gevent,多年的东西,更新也不是特别频繁,依旧是现在的首选,从这点也可以看出 Python 在异步方面很不给力。

Python 还有很多缺陷,这里不再多费笔墨,但一个事实是,「每个编程语言深入后,都可以提出很多缺陷」,但比较让人悲观的是 Python 社区的运作方式,其松散的运作方式让很多重要却具有较大难度的功能难以被推进与实现。当然,我个人能力有限,在社区也无丝毫贡献,所以也无话可说。

虽然吐槽了 Python,但 Python 还是一门值得学习的编程语言,特别是作为非技术人员的首门语言。

回到本文的主题。

  • 为什么 Go 对 Python 产生了冲击?

  • 为什么很多公司开始从 Python 转 Go?

  • 为什么 Java 对 Python 造成不了这么大的威胁?

先回答第三个问题,虽然 Java 比 Python 快上不少,但在「多技术联动的时代,这种差距的影响在缩小」,而 Python 在开发效率上比 Java 高出不少,让更多人倾向于选择 Python。

假设 Java 比 Python 快 10 倍,执行相同逻辑 Java 需要 1ms,而 Python 需要 10ms,差距似乎很大啊,但一个项目通常不会只使用编程语言完成逻辑操作,比如数据库使用 MySQL,数据库操作可能要花费 60ms,那么相同的逻辑,Java 项目需要 61ms,而 Python 项目需要 70ms,此时相差 9ms,注意这 9ms 的速度落差对于整体项目时间的比重并不大,可以说编程语言速度上的差距会因为一个项目中使用多种不同的工具而降低影响。

另一个原因是,选择 Java 通常是开发大型 Web 项目,此时会从架构、易维护、易读等不同角度考虑,这并不是 Python web 开发的主战场,中小型 Web 项目才是。

综上所述,Java 对 Python 的冲击并不大。

为何 Go 会产生这么大的冲击呢?

Go 的运行速度确实比 Python 快很多,但核心原因却是 Go 语言上手难度低、开发效率高,使用 Go 开发一个 Web 系统是很快的,语言层面支持异步,让初学者不必了解太多技巧,循规蹈矩的开发就可以获得一个性能不错的 Web 系统。

在早几年,Go 的周边工具链还不完善,所以影响没那么大,但经过今年发展,Go 已经全方位跟上了 Python 的步伐,从这点也可以看出,一个开源项目的背后有个商业公司的益处,对项目会有较强的推动性。

在 Web 领域,Python 在 Go 面前几乎没啥优势...

为什么很多公司要从 Python 转 Go?

Go 的众多优势是一个明显的原因。

此外很多公司的项目因为历史原因,还是使用 Python2.7 开发的,2020 年,Python 官方宣布停止对 Python2.7 的支持,让很多公司不得不考虑升级成 Python3,尴尬的是,Python3 并没有向后兼容 Python2,所以升级会存在风险,此时 Go 风头正盛,简单易用性能好的特性越发深入人心,这就产生了「升级 Python3 还不如使用 Go 重写的想法」。

注意,上述讨论都是针对于 Web 领域,而 Python 在数据分析与机器学习等领域依旧是一流语言,但遗憾的是,这几个领域并不太依赖于 Python 多样化的语法糖,而更侧重该领域特有的一些知识,如数学、统计学等等。

至此,结论已经很明显了,如果你想找 Web 方面的工作岗位,我建议你学习 Go。


本文分享自微信公众号 - GoCN(golangchina)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

IronPython的任何替代品,Python for .NET用于从python访问CLR?

IronPython的任何替代品,Python for .NET用于从python访问CLR?

有没有 Python for .NET或IronPython的替代方法来访问.NET CLR?这两个似乎都有缺点,因为Python for .NET没有正在积极开发(据我所知),如果你使用IronPython,你会丢失cpython中的一些功能.那么还有其他选择吗?

解决方法

除了Python for .NET(对我来说效果很好)之外,我所知道的唯一其他解决方案是通过COM互操作公开.NET库,因此您可以通过pywin32扩展来使用它们.

(我对.NET com interop还不太了解,所以希望其他人可以提供进一步的解释.)

python 2(而不是python 3)作为(临时)默认python?

python 2(而不是python 3)作为(临时)默认python?

在我的电脑上

~$ python -V
 Python 3.2.1

但是当我运行一些python程序时遇到了问题。我的猜测是(或者至少我想尝试一下)存在一些向后兼容性问题,并且我想使用

 python2 2.7.2-2

它也安装在我的系统上,但我不知道如何使它成为(临时)默认python。python脚本以

 #!/usr/bin/env python

而且我正在使用Arch Linux。

关于Python-产生时差的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Anaconda Python 3.6 – pythonw和python应该是等价的吗?、Go 对 Python 产生的冲击、IronPython的任何替代品,Python for .NET用于从python访问CLR?、python 2(而不是python 3)作为(临时)默认python?的相关信息,请在本站寻找。

本文标签:

上一篇linux – 通过特定接口路由应用程序流量(linux指定路由)

下一篇Python中具有重复项的两个列表之间的差异(python 列表 重复)