首页
学习
活动
专区
圈层
工具
发布

为什么 Python 这么慢?

根据我这些年来进行语言基准测试的经验来看,Python 比很多语言运行起来都要慢。...既然 Python 像 Java 和 C# 那样都使用虚拟机或某种字节码,为什么 Python 在基准测试中仍然比 Java 和 C# 慢得多呢?...CPython 的启动时间已经相对比较慢,而 PyPy 比 CPython 启动还要慢 2 到 3 倍。Java 虚拟机启动速度也是出了名的慢。....不用必须声明类型并不是为了使 Python 运行慢,Python 的设计是让用户可以让各种东西变得动态:可以在运行时更改对象上的方法,也可以在运行时动态添加底层系统调用到值的声明上,几乎可以做到任何事。...但也正是这种设计使得 Python 的优化异常的难。 为了证明我的观点,我使用了一个 Mac OS 上的系统调用跟踪工具 DTrace。

2.1K20

热度碾压 Java、C#、C++的 Python,为什么速度那么慢?

作者:Anthony Shaw 译者:弯月,责编:屠敏 本文经授权转自公众号CSDN(ID: CSDNnews),转载需授权 同为程序员的心头好,Python 为什么能这么慢?...在撰写本文时,我的 Chrome 浏览器开了 44 个线程。另外,基于 POSIX 的操作系统(如 Mac OS 和 Linux)的线程结构和 API 与 Windows 操作系统是不一样的。...当你在终端上写 python myscript.py 时,CPython 会启动一长串操作,包括读取、词法分析、语法分析、编译、解释以及执行。...NET CIL也是一样的,.NET的公共语言运行时(CLR)使用即时编译将字节码编译成机器码。 那么,既然它们都使用虚拟机,以及某种字节码,为什么Python在性能测试中比Java和C#慢那么多?...为了演示这个观点,我使用了一个Mac OS下的系统调用跟踪工具,叫做Dtrace。CPython的发布并不支持DTrace,因此需要重新编译CPython。

2.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么Python这么慢?

    用.NET实现的叫IronPython,Java的叫Jython,用Python实现的叫PyPy 我想回答这个问题:当Python比另一种语言慢2 - 10倍完成一个可比较的应用程序时,为什么它慢,我们不能使它更快...Python 3上的_pycache__/中的一个文件中,或者在Python 2的相同目录中。...net CIL是一样的,. net公共语言运行时(CLR)对机器代码使用即时编译。 那么,如果Python都使用虚拟机和某种字节码,那么为什么在基准测试中它比Java和c#慢那么多呢?...那么为什么CPython不使用JIT呢? jit也有缺点:其中之一就是启动时间。CPython的启动时间已经比较慢了,PyPy比CPython慢2 - 3倍。众所周知,Java虚拟机的启动速度很慢。...您可以在运行时替换对象上的方法,您可以在运行时对低级系统调用的值进行monkey-patch。几乎一切皆有可能。 正是这种设计使得优化Python变得非常困难。

    2.1K20

    选择Linux安装平台

    本质上,您是在您的常规计算机和操作系统软件中创建一台假装的计算机。 图 1:在 Parallels 虚拟化软件中运行的 Ubuntu 22.04 虚拟机的处理器和内存规格。...我可以在我的 Mac 上安装 Parallels 等虚拟化软件,然后创建一个虚拟机,从我的物理计算机借用处理器、内存、存储和网络。然后,我会在该虚拟机上安装 Fedora Linux 发行版。...图 2:正在运行 Ubuntu VM 的 MacBook Pro 上的 Parallels 虚拟化应用程序。...我经常在我的 Mac 笔记本电脑上同时运行 Fedora 和 Ubuntu Linux VM,没有任何性能下降,而且我毫不犹豫地同时运行两个或三个以上的 VM。...您可能想知道在容器中使用 Linux 来学习操作系统。这当然是可以的,但这个过程比传统的虚拟机更复杂,而且操作起来并不容易。 与虚拟机一样,容器需要在您的普通计算机上运行主机软件(容器引擎)。

    99810

    CVE-2020-3119 Cisco CDP 协议栈溢出漏洞分析

    GNS3 VM是作为GNS3的服务器,可以在本地用虚拟机跑起来,也可以放远程。GNS3仿真的设备都是在GNS3服务器上运行起来的。...因为我平常使用的工具都是在Mac中的ubuntu虚拟机里,所以我现在的使用的方法是,让ubuntu虚拟机的一张网卡和Cisco交换机进行直连。...本次研究的cdp程序是无法在虚拟机guestshell中看到的。经过后续研究,发现vsh中存在python命令,而这个python是存在于Cisco宿主机中的nxpython程序。...所以可以同python来获取到Cisco宿主机的Linux shell。然后通过mac地址找到你在GNS3中设置连接的网卡,进行ip地址的设置。...mac上的ubuntu虚拟机里面进行网络连通性的测试,正常情况下这个时候网络已经连通了。

    1.4K10

    KVM 虚拟化

    具体而言,KVM 可帮助您将 Linux 转变为虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即虚拟客户机或虚拟机(VM)。   KVM 是 Linux 的一部分。...KVM 将 Linux 转变为 1 类(裸机恢复)虚拟机监控程序。...所有虚拟机监控程序都需要一些操作系统层面的组件才能运行虚拟机,如内存管理器、进程调度程序、输入/输出(I/O)堆栈、设备驱动程序、安全管理器以及网络堆栈等。...安装步骤 准备环境 宿主机为 Ubuntu 16.04 LTS 操作系统 预安装 python3、python3-pip 软件 虚拟机操作系统的 cloud-init 镜像,比如 ubuntu-cloud-images.img...(下载后请放置在与脚本设定一致的位置) 虚拟机启动脚本(CentOS、Ubuntu) # 预先建立的目录 mkdir -p ~/kvm-data/images # 用于放置 cloud-init 镜像

    1.7K30

    Parallels Desktop 18 for Mac(pd虚拟机)

    在 Mac 虚拟机中跨多个操作系统开发和测试。毫不费力地运行 Windows 应用程序,不会减慢 Mac 的运行速度。...虚拟机中的 macOS 凭借与 Apple 公司的合作,Parallels 工程师打造出世界上首台在搭载 Apple M1 芯片的 Mac 计算机上运行的 macOS Monterey 虚拟机原型。...通过Parallels Desktop,您可以在Mac上使用高性能的Windows应用程序,例如运行Visual Studio、SolidWorks、Autodesk和其他资源密集型应用程序。...不用切换到PC就可以运行Windows应用程序。Parallels Desktop将Windows与Mac深度集成,允许您在Mac和Windows之间无缝移动和共享剪贴板内容、文件、文件夹和图像。...通过网络引导Linux ARM虚拟机。Linux用户现在可能喜欢在Linux ARM64虚拟机上使用NetBoot(在安装了Apple M系列芯片的mac上)。

    3K40

    【Docker 系列】docker 学习 一,Docker的安装使用及Docker的基本工作原理

    先来说说 Docker 和虚拟机有啥不一样的 以前的虚拟机这样的,系统占用资源大,很多步骤是冗余的,并且启动还很慢,不能忍 现在的 Docker 是这个样子的, 容器之间互相隔离,互不干扰,一起运行在同一个操作系统上...docker 是一个C/S 模型,docker 的后台守护进行运行在主机上,客户端和服务端通过套接字 Socket 通信 docker 服务端收到 docker 客户端的指令时,则执行该指令 为什么 Docker...比 虚拟机快呢?...在网络上找了一张图,咱们对比一下就明确了 如图,Docker 比虚拟机快的原因如下: docker 比虚拟机的抽象层更少 docker 利用的是宿主机的内核,而虚拟机是需要新建一个 OS 基于如上 2...点,虚拟机启动时,会加载操作系统,启动慢,时间基本上是分钟级的 docker 启动的时候,不需要加载操作系统内核,因此快,时间基本上是秒级的 参考资料: docker docs 欢迎点赞,关注,收藏

    89940

    国内 Mono 相关文章汇总

    在 Linux 操作系统中运行 ASP.NET 4 (上) 在 Linux 操作系统中运行 ASP.NET 4 (中) 在 Linux 操作系统中运行 ASP.NET 4 (下) 再谈为什么要使用MONO...置于Mono下遇到的一些问题 在MONO下实现WCF所遇到的问题 使用MONO在MAC OS上开发——同步日志(一) 使用MONO在MAC OS上开发——同步日志(二) MagicMongoDBTool...类库 如何在Mac OS X操作系统上运行FastReport.Mono?...,运行asp.net程序 在jexus下如何简单的配置多站点 Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址...Mac OS X上编写 ASP.NET vNext(一)KRE环境搭建 Mac OS X 上编写 ASP.NET vNext (二) IDE配置 OWIN 初探 使用 OWIN 作为 ASP.NET Web

    13.6K60

    Ubuntu 13.04环境Hadoop1.2.1单机模式安装

    一、虚拟机上安裝Ubuntu 13.04 中文版 当然,你要是习惯看英文版,也可以直接安装英文版。 老老实实从官网下载安装即可,安装系统不是本文的重点。...正常情况下,会显示hadoop的版本号之类 6、运行wordcount 示例程序 mkdir input (先创建input目录) cp conf/* input (将conf下的所有文件...,复制到input目录下) bin/hadoop jar hadoop-example-1.2.1.jar wordcount input output (运行wordcount程序,并将结果写入output...目录下) cat output/* (查看输出结果) 后记:以上操作,也适用于mac os、cent os,不过有些细节要注意 mac os上JAVA_HOME的路径为:/System/Library...上apt-get命令要改为 yum cent os上查看是不是64位:getconf LONG_BIT Hadoop群集配置,可参考 http://www.linuxidc.com/Linux/2012

    47010

    虚拟机中的病毒感染到宿主机的原理

    但是,在vscode运行,它居然不报错。第5行的结果,它报:arg: 5。为什么它不报错的?还有这5是什么来的啊?不可能是arguments.length吧。 node.js有这个东西 4."...请读者在Linux、Mac OS或者Windows 10自带的Ubuntu Bash下使用mitmproxy,只有这样,才能发挥它的最大能力。"...在子系统里面执行:python -m http.server 然后用手机访问电脑ip:8000,如果能看到东西,说明是mitm的问题。如果打不开,说明是你网络的问题。...使用Airtest超快速开发App爬虫 7.提问:其实从虚拟机感染到实体机是什么原理呢?如果虚拟机运行的是一个厉害的新品种的病毒,会中招吗? 有两种情况: 1....虚拟机本身有漏洞,病毒在虚拟机里面通过这个漏洞感染宿主机。例如这两天java的log4j2漏洞。如果虚拟机是Java写的,而又用log4j2来记录日志。就可以利用。 2.

    2.1K40

    真正从零开始,TensorFlow详细图文安装入门教程!

    虽然可以用Docker来实现在Windows上运行,但小问题很多,它支持的最好的还是基于unix内核的系统,如Linux,因此我们最好还是安装一个Linux的环境来运行它。...如果你使用的是Mac,那就方便很多了,因为Mac os本身就是一个基于Unix的操作系统,已经搭载了全部安装Tensorflow所需要的组件。...所以安装的很多步骤都可以省去,直接进行Tensorflow的安装,不过命令同Ubuntu有所不同。但你也可以看看接下来的教程,对理解那些命令也会有帮助。呃……你说你在Mac上装了Windows?...Ubuntu桌面的样子,(悄悄说一句笔者觉得基于Unix的系统普遍比Windows好看太多,主要是字体看着真舒服) 安装好之后,我们看到了一些熟悉的软件和一些不熟悉的软件,我们先不去管它,介绍一下Python...Python是一种高级语言,它的特点是程序很简洁,但是因为简洁,所以在将其翻译成CPU可以理解的指令——也就是执行代码的时候速度会比那些低级一些的语言,比如C语言慢一些。

    1.7K140

    Docker(1)- 什么是 Docker

    可能要等几分钟,应用程序才能真正运行 容器的基础知识 容器为什么会出现 上面也讲述了单机部署应用和虚拟机技术的局限性 容器的诞生就是为了解决这些局限性的 什么是容器 对应用软件和其依赖的包进行标准化打包...【虚拟化是物理资源层面的隔离】 多个容器可以在同一台计算机上运行,并与其他容器共享OS内核 也允许多个VM在单台计算机上运行,但需要启动单独的虚拟机 OS 仅有一个物理机的OS,多个容器共享物理机的资源...GB 可以在数秒内完成启动 和物理机启动时间一样慢,可能要几分钟 可以处理更多的应用程序,消耗的资源比 VM 少 每个容器在用户空间中作为隔离的进程运行 虚拟化 + 容器 其实就是 一台物理机上部署多个...VM,每个 VM 上又可以有多个容器 容器和 VM 一起结合使用,在部署和管理应用程序时提供了很大的灵活性 ?...,即使存在差异,但软件仍然可以运行 在 Docker 镜像上运行的 Docker 容器的优势 标准:Docker 创建了容器的行业标准,因此它们可以在任何地方移植 轻巧:容器共享机器的操作系统内核,因此不需要每个应用程序都用操作系统

    97951

    python语言一般用于什么_PYthon

    1.3  Python 特点 缺点: 运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。...而C/C++程序是运行前直接编译成CPU能执行的机器码,所以非常快。 缺点就是代码不能加密。发布Python程序,实际上就是发布源代码。...OS BeOS Amiga VMS/OpenVMS QNX VxWorks Psion Python 同样可以移植到 Java 和 .NET 虚拟机上。...在Mac OS中,安装程序过程中改变python的安装路径。如果你需要在其他目录引用Python,你必须在path中添加Python目录。...从这个角度来看,Python 的交互式解释器相当于一个功能无比强大的“计算器”,比 Windows 、Mac OS X 系统自带的计算器的功能强大多了,让我们就从这个强大的“计算器”开始学习 Python

    1.6K31

    Mac 和 Win,到底用哪个系统学编程?

    Mac OS 我是从大三在字节跳动实习的时候,第一次接触到 Mac OS 系统。 作为一个十几年 Windows 忠实用户,我刚开始用 Mac 是非常非常不习惯的,无论是界面、快捷键还是终端。...先说说我感受到的 Mac OS 的优点吧,首先就是我用了 Mac 几年了,几乎没有发生过死机(也死机过,但屈指可数),明显比 Win 的稳定性高。...而 Mac OS 也是存在缺点的,首先就是对于我这种白票党来说,我发现 Mac 上的很多软件不能让我自由地去使用;而且 Mac 目前的软件数还是没法跟 Windows 比的,很多 Windows 上好用的软件在...Linux 除了 Windows 和 Mac 这两种面向大众用户的操作系统外,对绝大多数程序员来说,Linux 系统是必须要会使用的!因为目前绝大多数企业内的项目都是部署在 Linux 服务器上的。...而且哪怕你要使用其他的系统,可以搞云主机、或者用 VM Ware、Parallels Desktop 之类的虚拟机软件,在自己的主电脑上运行别的系统。

    6K30

    带你认识 flask linux 部署

    免费的方案基于你的计算机上可以运行虚拟机。...你可以通过SSH客户端连接到服务器,并运行命令行进行交互。如果你使用的是Linux或Mac OS X,则可能已经安装了OpenSSH。...在没有外部访问的情况下运行Python Web应用程序通常是一个好主意,然后还需要一个非常快速的Web服务器,它可以优化来自客户端的所有静态文件的请求。...我在博客上写了一篇关于如何通过HTTPS运行你的Flask应用程序的详细文章 11 部署应用更新 我想讨论的基于Linux的部署的最后一个主题是如何处理应用程序升级。...Raspbian镜像需要安装在SD卡上,然后插入树莓派,以便它启动时可以识别到。 在树莓派站点上可以查看到从Windows,Mac OS X和Linux将Raspbian镜像复制到SD卡的方法。

    2K20

    docker入门

    而 Docker 的镜像提供了除内 核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 “这段代码 在我机器上没问题啊” 这类问题。...(1)资源占用多 虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有 1MB,虚拟机依然需要几百 MB 的内存才能运行。...(2)冗余步骤多 虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录。 (3)启动慢 启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用程序才能真正运行。...ubuntu:14.04 这指的是镜像文件 bash : 指定用交互式的shell,因此需要bash命令 Docker与CentOS docker允许在容器内运行应用程序,使用docker...run命令来在容器内运行应用程序。

    1.3K50
    领券