iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何进行Python虚拟机的执行框架
  • 332
分享到

如何进行Python虚拟机的执行框架

2023-06-17 16:06:37 332人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

今天就跟大家聊聊有关如何进行python虚拟机的执行框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在Python虚拟机中一个最核心的概念,在Python语言中,一切都是对象,也就

今天就跟大家聊聊有关如何进行python虚拟机的执行框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

Python虚拟机中一个最核心的概念,在Python语言中,一切都是对象,也就是说一个整数就是一个对象,一个字符串也是一个对象,其实类型也是一种对象,整数类型是一个对象。

了解这两点对掌握第二部分的内容已经足够了。但是,虚拟机和执行环境还仅仅是Python运行机理(或者说运行模型)的一部分,为了对Python整个的运行机理做一个全面的了解,我们还需要大致了解一下Python的运行时环境。

前面我们说了,PyFrameObject对应于可执行文件在执行时的栈帧,但是一个可执行文件要在操作系统中运行,只有栈帧是不够的。之前我们遗漏了两个对于可执行文件运行至关重要的概念:进程和线程

我们首先要对Python的运行模型(主要是线程模型)进行一个整体概念上的了解,虽然这部分内容我们会留到剖析Python的多线程实现时再详细考察。但是由于Python虚拟机在初始化时会创建一个主线程。

所以其运行时环境中存在一个主线程,而且本部分将剖析的Python的异常机制会利用到Python内部的线程模型,因此对Python线程模型有一个整体概念上的了解也是必须的。以Win32平台为例,我们知道,对于原生的Win32可执行文件,无论是由C/C++产生,还是由Delphi产生,都会在一个进程(Process)中运行。

进程并非是与机器指令序列相对应的活动对象,这个与可执行文件中机器指令序列对应的活动对象是由线程(Thread)这个概念来进行抽象的,而进程则是线程的活动环境。对于通常的单线程可执行文件,在执行时操作系统会创建一个进程,在进程中,又会有一个主线程;而对于多线程的可执行文件,在执行时会操作系统会创建一个进程和多个线程。

该多个线程能共享进程地址空间中的全局变量,这就自然而然地引出了线程同步的问题。CPU对任务的切换实际上是在线程之间切换,在切换任务时,CPU需要执行线程环境的保存工作,而在切换至新的线程之后,需要恢复该线程的线程环境。

这些关于程序运行的概念同样适用于Python,Python实现了对多线程的支持,而且Python中的一个线程就是操作系统上的一个原生线程。这里我们对多线程机制不过多深入,现在只需记住,Python在执行时,可能会有多个线程存在。

在前面我们看到了虚拟机的大致运行框架,实际上这个虚拟机就是Python中对CPU的抽象,可以看做是一个软CPU,Python中的所有线程都使用这个软CPU来完成计算工作。真实机器上的任务切换机制对应到Python中。

就是使不同的线程轮流使用虚拟机的机制。CPU切换任务时需要保存线程运行环境。对于Python来说,在切换线程之前,同样需要保存关于当前线程的信息。在Python中,这个关于线程状态信息的抽象是通过PyThreadState对象来实现的,一个线程将拥有一个PyThreadState对象。

所以从另一种意义来说,这个PyThreadState对象也可以看成是对线程本身的抽象。但实际上,这两者是有很大区别的,PyThreadState并非是对线程本身的模拟,因为Python中的线程仍然使用操作系统的原生线程。

PyThreadState仅仅是对线程状态的抽象,不过在本书的大部分章节中,为了叙述的方便,我们不过分严格地区分线程和线程状态本身。所以在以后我们有时会称PyThreadState为线程对象,有时会称之为线程状态对象。只有在剖析多线程机制时,我们会严格区分两者。对于下面将提到的PyInterpreterState对象,也有类似的考量。

刚才提到,在Win32下,线程是不能独立存活的,它需要存活在进程的环境中,而多个线程可以共享进程的一些资源。在Python中同样也是如此,考虑一下,如果Python程序中有两个线程,都会进行同样的一个动作——import sys,那么这个sys module究竟应该存在几份?

是全局共享的还是每个线程都有一个sys module?如果每个线程有自己独立module集合,那么Python对内存的消耗就会显得非常惊人。所以在Python中,这些module都是全局共享的,仿佛这些module都是进程中的共享资源一样,对于进程这个抽象概念,Python以PyInterpreterState对象来实现。

在Win32下,通常都会有多个进程,而Python实际上也可以有多个逻辑上的interpreter存在。在通常的情况下,Python中只有一个interpreter。这个interpreter中维护了一个或多个PyThreadState对象,与这些PyThreadState对象对应的线程轮流使用一个字节码执行引擎。看,是不是与真实机器上的程序执行模型非常相似?

谈到多线程,就不能不谈到线程同步。在Python虚拟机中,是通过一个全局解释器GIL(Global Interpreter Lock)来实现线程同步的,关于这部分内容,我们留到剖析Python多线程机制时再详细考察。

好了,现在讨论刚才提到的那两个关键对象:表示进程概念的PyInterpreterObject对象和表示线程概念的PyThreadState对象。

看完上述内容,你们对如何进行Python虚拟机的执行框架有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: 如何进行Python虚拟机的执行框架

本文链接: https://www.lsjlt.com/news/290736.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行Python虚拟机的执行框架
    今天就跟大家聊聊有关如何进行Python虚拟机的执行框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在Python虚拟机中一个最核心的概念,在Python语言中,一切都是对象,也就...
    99+
    2023-06-17
  • laravel框架是如何执行的
    这篇“laravel框架是如何执行的”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“laravel框架是如何执行的”文章吧。一...
    99+
    2023-07-06
  • 如何进行ProxmoxVE虚拟机LVM扩容
    本篇文章为大家展示了如何进行ProxmoxVE虚拟机LVM扩容,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。-- Proxmox VE虚拟机lvm扩容(/dev/mapper/centos-root...
    99+
    2023-06-05
  • php如何在虚拟主机上自动执行
    要在虚拟主机上自动执行PHP代码,可以按照以下步骤进行操作:1. 创建一个以 .php 结尾的 PHP 文件,例如 index.ph...
    99+
    2023-08-25
    虚拟主机 php
  • CPython 虚拟机:Python 代码执行的幕后功臣
    ...
    99+
    2024-04-02
  • 云虚拟机如何进行网站搬家
    云虚拟机进行网站搬家的方法:1、登录云虚拟机控制台;2、点击左侧“云虚拟主机”;3、选择“云虚拟主机管理”;4、在列表中找到需要操作的云虚拟主机,点击右侧“管理”;5、在操作管理的文件系统设置中点击“网站搬家”;6、最后在弹窗中填写FTP信...
    99+
    2024-04-02
  • 虚拟主机如何设置目录执行权限
    在虚拟主机中设置目录执行权限的方法::1.登录主机管理后台;2.选择虚拟主机,点击管理;3.进入设置目录执行权限选项;4.设置目录执行权限;具体步骤如下:首先,在计算机中进入虚拟主机代理商网站,并登录到主机管理后台;进入到主机管理后台后,在...
    99+
    2024-04-02
  • 如何进行gopher-lua虚拟机的原理分析
    这篇文章将为大家详细讲解有关如何进行gopher-lua虚拟机的原理分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在 GitHub 玩耍时,偶然发现了gopher-lua ,这是一个纯 ...
    99+
    2023-06-16
  • 如何进行CentOS vmware启动虚拟机安装
    本篇文章给大家分享的是有关如何进行CentOS vmware启动虚拟机安装,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在CentOS vmware上装了linux系统(cen...
    99+
    2023-06-16
  • 如何进行CaptureFramework框架分析
    这篇文章跟大家分析一下“如何进行CaptureFramework框架分析”。内容详细易懂,对“如何进行CaptureFramework框架分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起...
    99+
    2023-06-04
  • 如何进行Hystrix开源框架
    本篇文章给大家分享的是有关如何进行Hystrix开源框架,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Spring Cloud集成了Hystrix,Hystrix在很多大公司里...
    99+
    2023-06-19
  • 如何进行安装ThinkPHP框架
    本文小编为大家详细介绍“如何进行安装ThinkPHP框架”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何进行安装ThinkPHP框架”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、环境要求在安装 Think...
    99+
    2023-07-05
  • Linux中如何进行JAVA虚拟机的垃圾回收
    本篇文章给大家分享的是有关Linux中如何进行JAVA虚拟机的垃圾回收,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JVM 的 GC的日志是以替换的方式(>)写入的,而不...
    99+
    2023-06-05
  • 如何理解Python虚拟机中的Python运行环境
    今天就跟大家聊聊有关如何理解Python虚拟机中的Python运行环境,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。其实Python运行环境是一个全局性的概念,而执行环境实际就是一个...
    99+
    2023-06-17
  • 如何对SSM框架进行整合
    今天就跟大家聊聊有关如何对SSM框架进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SSM(Spring+SpringMVC+Mybatis)是目前较为主流的企业级架构方案,不...
    99+
    2023-05-31
    ssm
  • python3 scrapy框架的执行流程
    scrapy框架概述:Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘...
    99+
    2024-04-02
  • LeetCode上的Spring框架:如何在Python中进行加载?
    Spring框架是Java世界中广泛使用的开源框架之一,它提供了一种轻量级的、非侵入式的编程模型,使得开发者能够更加便捷地构建企业级应用程序。但是,如果你想在Python中使用Spring框架,该怎么办呢? 在本文中,我们将探讨如何在Py...
    99+
    2023-06-17
    leetcode load spring
  • cPanel虚拟主机上运行Python的
    有些做开发的朋友可能希望在cPanel虚拟主机上执行Python脚本,cPanel服务器默认python是装好的,一般位于/usr/bin/python目录下(可以通过whereis python命令确认下)。下面我们看下如何在c...
    99+
    2023-01-31
    虚拟主机 cPanel Python
  • Java JVM虚拟机是如何运行的
    本篇文章为大家展示了Java JVM虚拟机是如何运行的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一:JVM基础概念      &nbs...
    99+
    2023-05-31
    java jvm 虚拟机
  • PHP中如何进行RPC框架的开发?
    RPC(Remote Procedure Call),是一种进程间通信协议,它允许不同的进程在不同的物理机器上通过网络进行通信和协作。RPC框架越来越受到关注,因为它可以帮助开发者轻松地实现分布式系统的开发。在本篇文章中,我们会一步一步地介...
    99+
    2023-05-14
    开发 PHP RPC框架
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作