导航:首页 > 程序命令 > 程序员常用软件打包

程序员常用软件打包

发布时间:2023-08-01 03:19:36

Ⅰ 作为程序员的你,常用的软件有哪些

这个就非常多了,下面我以常见的编程开发软件和数据库管理软件为例,简单介绍几种,感兴趣的朋友可以尝试一下:

01 编程开发软件

这个要看具体编程语言了,不同语言开发工具自然不同,这里以常见的C/C++、javapython为例,简单介绍3种比较常用的软件:

这是Windows平台下一个非常专业的集成开发工具,号称宇宙第一IDE环境,不仅仅只是C/C++,常见的C#、VB等编程语言,这个软件都能很好支持,智能补全、代码高亮、语法检查等功能非常不错,除此之外,还支持单元测试、代码重构和分析等高级功能,因此非常适合大型项目开发和维护:

这是一个非常专业智能的Java开发工具,在企业和个人桌面中,有着非常高的使用率和欢迎度,自动补全、语法提示、代码高亮等功能非常不错,除此之外,还支持JUnit、CVS整合、代码重构等高级功能,自带有Maven和Gradle构建工具,因此更适合Java项目开发和维护,个人使用起来非常不错:

这是一个非常专业的Python开发软件,和IntelliJ IDEA一样,Jetbrains公司的产品,在业界非常流行、受欢迎,智能补全、代码高亮、语法提示等功能非常不错,除此之外,还支持代码重构和分析、单元测试等高级功能,因此更适合大型项目,个人使用来说,也非常简单,很容易上手和掌握:

02 数据库管理软件

这个就非常多了,不同数据库都有专门的管理软件和工具,这里简单介绍3个比较通用的数据库管理软件,分别是HeidiSQL、DBeaver和DataGrip,对于日常使用来说,非常不错:

这是Windows平台下一个非常轻巧灵活的数据库管理软件,基于Delphi开发而来,目前支持MySQL、MariaDB、MSSQL、PostgreSQL等主流数据库,常见的建库建表、视图索引、触发器等基本功能,这个软件都能很好兼容,除此之外,还支持SQL脚本导入导出、数据备份恢复等功能,对于日常数据库管理来说,非常不错:

这是一个基于Java开发的数据库管理软件,免费、开源、跨平台,目前支持Oracle、MySQL、PostgreSQL、SQL Server等十几种主流数据库开发,建库建表、视图索引、触发器、存储过程等基本功能 都 可轻松查看和设计,数据库导入导出、数据 恢复 备份等功能也都非常不错,对于日常数据库管理和维护来说,是一个非常不错的工具:

这也是一个通用的数据库管理软件,Jetbrains公司的产品,支持跨平台,但原则上针对个人不免费,常见的PostgreSQL、MySQL、Oracle等数据库,这个软件都能很好支持, 数据导入导出( 恢复备份 )、 智能代码填充、版本 集成 控制等功能非常不错,对于日常数据库管理来说,也是一个不错的工具:

每天常用开发工具:

0.Git:分布式版本控制系统;

1.IntelliJ IDEA:java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一;

2.Sublime Text:不只是代码编辑器;

3.Postman:Http请求模拟工具和功能强大的网页调试工具;

4.DataGrip:支持几乎所有主流的关系数据库、多功能的数据库操作工具;

5.Vagrant:用于创建和部署虚拟化开发环境,配合虚拟机使用;

6.Gradle:自动化构建工具;

7.JIRA:项目与事务跟踪工具;

8.iTerm2:Mac上的终端工具;

9.Jenkins:持续集成工具。

做了一个写代码用了十几年的人,很多编程的习惯已经养成了,现在就罗列下每天必用的软件:

直接安装的linux系统,因为几乎所有的代码都是在linux下完成


java开发环境


C/C++代码编辑工具


linux下虚拟windows系统virtualBox


软件提交工具git

不同的开发语言,每天要用到的软件可能不一样。

我是开发java web的,电脑安装了很多工具,但是说每天要用到的好像就几个。


作为程序员使用最多的软件,莫过于编程开发所用到的软件编辑器,但是编辑器的种类有很多。我们需要做到的是,找到你最喜欢的编辑器然后熟练的使用它。

同时掌握常见的一些快捷键的操作方式,从而来提升我们的工作效率,而不是以软件而论软件,什么都去接触使用。毕竟软件是工具是帮助我们提升开发效率。


下面我就列举我们PHP经常使用的软件

IDE工具类软件

这一类是开发软件编写代码用的。这一类的软件非常多,我就推荐一个经常使用的PHPStorm,因为太多的话大家也用不到,也没有那么多的精力去熟练每一个编辑器。


PHPStorm是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可以说是PHP开发程序员必备的神器。

常用快捷键如下:

1.复制快捷方式

F5 复制文件/文件夹

CTRL+C 复制

CTRL+V 粘贴

CTRL+X 剪 切,删除行

CTRL+D 复制行

CTRL+SHIFT+V 可以复制多个文本

2.自动代码

ALT+回车 导入包,自动修正

CTRL+ALT+L 格式化代

码CTRL+ALT+I 自动缩进

CTRL+ALT+O 优化导入的类和包

CTRL+SHIFT+SPACE 切换窗口

CTRL+SPACE空格 代码自动完成,代码提示,一般与输入法冲突

CTRL+ALT+SPACE 类 名或接口名提示(与系统冲突)

CTRL+P 方法参数提示,显示默认参数

CTRL+J 自动代码提示,自动补全

CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里ALT+INSERT 生成代码(如GET,SET方法,构造函数等)

3.运行

Alt + Shift + F10 选择的配置和运行

Alt + Shift + F9 选择配置和调试

Shift + F10 运行

Shift + F9调试

Ctrl + Shift + F10运行范围内配置编辑器

Ctrl + Shift + X运行命令

4.其他快捷方式

CTRL+Z 倒退(代码后悔)

CTRL+SHIFT+Z 向前

CTRL+H 显 示类结构图

Ctrl +F12 文件结构弹出

CTRL+O 魔术方法

CTRL+/ 注释//取消注释

CTRL+SHIFT+/ 注释/*...*/

ctrl + '.': 折叠选中的代码的代码

ALT+ / 切换代码视图,标签切换

5.其他快捷方式

CTRL+Z 倒退(代码后悔)

CTRL+SHIFT+Z 向前

CTRL+H 显 示类结构图

Ctrl +F12 文件结构弹出

CTRL+O 魔术方法CTRL+/ 注释//取消注释

CTRL+SHIFT+/ 注释/*...*/

ctrl + '.': 折叠选中的代码的代码

ALT+ / 切换代码视图,

数据库相关常用的工具

Navicat for MySQL是管理数据库的操作工具,都是可以连接远程的云数据库。方便简化开发,还可以手动备份、可视化的sql分析。

常用快捷键:

ctrl+q 打开查询窗口

ctrl+/ 注释sql语句

ctrl+shift +/ 解除注释

ctrl+r 运行查询窗口的sql语句

ctrl+shift+r 只运行选中的sql语句

F6 打开一个mysql命令行窗口

ctrl+d (1):查看表结构详情,包括索引 触发器,存储过程,外键,唯一键;(2):复制一行

ctrl+l 删除一行

ctrl+n 打开一个新的查询窗口

ctrl+w 关闭一个查询窗口

ctrl+tab 多窗口切换

服务器连接软件

XShell6是非常强大的SSH远程终端客户端,帮助我们连接远程的Linux服务器来进行操作。

粘贴:Shift+Insert

历史 命令编辑ctrl + p 返回上一次输入命令字符

alt + > 返回上一次执行命令

其它

ctrl + s 锁住终端

ctrl + q 解锁终端

ctrl + l 清屏相当于命令clear

Tab键,快速补全命令

轻量级文本编辑器

Notepad++。这个很轻量,打开一下文本非常的方便。

常用快捷键

Ctrl+C 复制

Ctrl+X 剪切

Ctrl+V 粘贴

Ctrl+Z 撤消

Ctrl+Y 恢复

Ctrl+A 全选

Ctrl+F 键查找对话框启动

Ctrl+H 查找/替换对话框

Ctrl+D 复制并粘贴当行

Ctrl+F2 切换书签

F2 转到下一个书签Shift+F2 转到上一个书签

F11 全屏模式


综上所述,软件只是一个工具,我们需要找到自己喜欢使用的,然后熟练一些常用的快捷方式即可,而并不是在于数量多。

前端

visual studio code

后端:

pycharm

IDEA

安卓:

android studio

浏览器:

谷歌

火狐

数据库管理:

navicat


远端链接:

fileZilla

xshell

electerm(mac上使用)


流程图设计:

xmind

processOn

笔记:

为知笔记(付费一年60)

有道云笔记

虚拟机(容器)

VMware Fusion(mac上)

docker


其他:

postman

jmeter

作为一个12年开发经验的前端程序员,我来聊聊每天必用的几个软件。

写代码自然离不开 编辑器 。目前我主要使用的是微软的 Visual Studio Code 。VS Code比较轻量,功能足够应付日常开发所需,跨平台,而且完全免费 。因为之前长期使用Visual Studio在Windows平台上做开发,后来技术栈变化,经常需要在Linux和MacOS上做开发,VS Code就成了我顺理成章的选择。后来干脆在Windows上也用VS Code了。目前整个团队都已经被VS Code圈粉了。其它类似的如Sublime Text(需要付费)和Atom也有不少人使用。

因为是团队开发, 源代码管理工具 自然必不可少,而 git 是目前最热门的一个。我们公司也不例外,几年前从Perforce迁移到了 GitHub企业版 (和公众版本UI完全相同)。平时的代码审查也都是在GitHub企业版上完成的,不再使用单独的代码审查工具。有些不习惯使用命令行方式的同事使用 SourceTree 完成日常的代码分支管理和提交,而我则比较热衷于命令行方式。VS Code也提供了比较完善的git集成,但因为习惯的原因,除了直观比较不同代码版本的差异,我一般也不用VS Code执行git操作。

作为一个Web前端, 浏览器及前端调试工具 自然不可或缺, Google Chrome + Developer Tools (F12) 自然是首选。使用Developer Tools,可以对JavaScript进行调试,监控HTTP请求/响应,分析CSS计算问题和JS性能问题。 Chrome下还有很多功能强大的插件,个人比较常用的包括React Developer Tools、PostMan、Proxy SwitchOmega和AdBlock。当然,因为经常面对浏览器兼容性问题,Firefox、IE、Edge、Apple Safari以及各自的Developer Tools都是免不了要用的。

团队目前使用Scrum模型,自然需要一个做 任务规划和质量管理 的工具。我们采用了 JIRA , 每天的站会(daily stanp meeting)都会对scrum看板(board)进行更新。

遇到技术问题,自然免不了要上网查找资料。 Google 的使用频率非常高(需要科学上网)。大部分问题都能在 StackOveflow 上找到线索,但有时候也不得不跑到大名鼎鼎的同性交友网站 GitHub 上看源码。 MDN (Mozilla Developer Network)对于前端开发也是不可或缺(此处鄙视一下w3cschool,上面到处是错误知识)。

其它如node.js/npm、docker等,因为和具体的技术栈相关,就不具体展开讲了。

作为一个开发人员,你每天使用什么软件呢,欢迎说说看。

尽管我是后端出身的,不过也经常写前端代码,甚至还用C#/C++参与过一些客户端开发,自认为也算是一个Web全栈工程师。随着前端技术的不断进步,现在的前端已经不再是写写页面这么简单了,很多逻辑在前端就写了,我建议每一个出色的开发者应该尽可能对前后端都能有不错的掌握。

今天给大家推荐一些我认为前端和后端开发都需要经常用到的一些软件,这里面包括了查询资料工具、原型工具、文本编辑器、版本管理工具。

原型工具

不管前端还是后端,尤其是前端程序员,在跟产品经历沟通之后肯定会要查看原型的,方便自己在开发过程中使用,基本上大公司输出的原型都比较规范,除非你遇到张小龙这种级别的大神,哥们儿直接盯着你做了。

目前主流的原型工具主要有Axure、MockPlus、墨刀等,其中Axure依然是应用最为广泛的原型工具,大多数开发者也都应该用来看原型。

文本编辑器

不管是前端还是后端程序员,当然前端程序员就不说了,在WebStorm出现之前,没有一款真正可以叫做IDE的前端开发工具,那么基本上文本编辑器就是前端程序员最重要的编程工具。同样后端程序员即使不需要写前端代码,文本编辑器也是必备的,您不需要每次看代码都打开庞大的集成开发环境,像IDEA这种比较耗费资源的,平时查看代码啥的完全没有必要,何况你还经常要看一些前端代码。

当然你比较习惯Linux/Unix下开发,Emacs/Vim可能是你用得比较多的文本编辑器,还有UltraEdit、Sublime Text、EditPlus、Atom这些老牌的文本编辑器,不过现在我觉得每个程序员都应该下载一个Visual Studio Code,支持的语言比较多,而且插件非常丰富,是微软官方支持的开发者工具,开源免费而且颜值非常高。

查询资料、版本管理工具

不用多说,每个程序员都要学会很好的使用Google、Stack Overflow两个工具,可以说你日常开发当中可能遇到的问题,通过这两个工具你全都能找到解决方案。

另外一个是Dash文档管理工具,Dash是一个非常好的开发者帮助文档工具,这个工具的好处是给所有的开发文档做了一个整合,C/C++、Java、PHP、Python、Latex、Emacs Lisp、Haskell、JavaScript、Go语言等文档都能够在这个工具当中下载使用。

最后一个就是版本管理了,SVN和Git依然是目前使用最为广泛的版本管理工具,不过就使用来说我还是推荐Git版本控制系统,可以说这个时代Git就是最好的版本管理工具了,尤其是开源时代、互联网时代,Git已经成为了最重要的版本管理工具,不管是命令行管理还是使用Github等客户端工具,堪称完美。

入行十一年,现在主要做一些管理和架构方面的工作,也会做一些Coding,主要是一些新技术的研究和“踩坑”。

编辑器

首先是EditPlus,这是一个文本编辑器。最常用的两个功能:正则表达式查询和文件夹内所有文件内容搜索。

平时经常需要看一些系统日志,甚至要从好几天几十个日志文件中找到内容,这个软件很好用。(原谅我们没有上日志平台)

然后就是IDE啦,我还是喜欢用Eclipse,有时候会用STS(Spring Tool Suite),它也是一个被包装过的Eclipse,方便做一些Spring框架的研究。



数据库工具

一个是DbVisualizer,凡是具有JDBC数据库接口的数据库都可以管理,什么数据库都能连。

还有一个是SQLyog,这是一个快速而简洁的图形化管理MYSQL数据库的工具,我只用里面一个功能,就是数据的导入导出,效率非常高!



接口测试工具

大部分项目只对外提供接口服务,所以接口测试工具少不了,我一般使用SoapUI,WebService/Rest都可以进行测试。



其他

每天肯定会用的肯定不止上面几个,还有版本控制工具svn和git,都会用到是因为单位svn现在开始往git迁移。

因为用的Scrum敏捷开发流程,所以JIRA、Sonar、Fisheye这些也是都会用到的。

Maven也不用说了,几个项目基本都是基于Maven构建的。

必用的基本就是这些,只要电脑开着,这几个软件基本都是打开状态。

Ⅱ msi和exe安装文件有什么区别

不同之处:

1)点击Setup.exe文件来实现安装:

Setup.exe是一个安装引导程序。它是安装工程通过MSBuild创建的,其中包含了一个XML文件,定义了应用程序所需要的系统必备安装包信息。Setup.exe程序会检查这些系统必备安装包是否需要被下载和安装,如果需要,它就会先安装那些系统必备程序。当我们运行它的时候,它会读取setup.ini来确定安装所需要的配置并开始安装流程。

如果这个setup.exe是在Visual Studio 2005中生成的,那么用户就必须有管理员权限才能运行它。我们可以看见在setup.exe的图标上有一个防护盾,这就意味着这个程序只有管理员才能运行它。如果这个setup.exe是在Visual Studio 2008中生成的,那么用户不一定需要有管理员的权限就能执行它,当有一些特定操作需要管理员的权限时,系统会显示UAC对话框要求提升权限。这类Setup.exe的图标上不会显示防护盾。

2)点击setup.msi来进行安装。

Setup.msi是一个WindowsInstaller包。和setup.exe不一样,直接运行MSI安装包就不会自动安装自定义系统必备。它只会安装主应用程序。在安装项目的属性对话框中修改输出文件的名字,我们可以自定义MSI包的文件名。当我们“运行”它的时候,其实是Windows Installer在执行MSI包定义的各项操作。因此我们需要安装Windows Installer的正确版本才能运行setup.msi。我们也可以使用msiexec命令去安装setup.msi文件。

以上资料来源Microsoft官网的FAQs,感谢原作者Yanıtlar

Ⅲ 如何把我的Java程序变成exe文件

如何把我的Java程序变成exe文件?

JAVA是一种“跨平台”的语言,拥有“一次编写,处处运行”的特点,让它成为当今IT行业,必不可少的一门编程语言。每一个软件开发完成之后,应该大家都需要打包程序并发送给客户,常见的方式:java程序打成jar包,web程序打成war包完成之后再通过某种传输方式,传输给客户让其运行。war包我们这里不做过多阐述,主要说说jar包的问题,jar包必须需要运行在jre环境中,并且需要通过“java -jar 路径/*.jar”的指令才可以完成运行,很多客户并不知道这个命令,这对于他来说确实有些困难,每次都要我们程序员自己去运行,那么有没有更好的办法呢?其实在windows操作系统中,大家最熟悉的应该是exe程序,如果我们大家能够将jar文件打包成exe文件,那么客户就能帮我们去启动程序了,接下来,我们就看看如何将一个jar包转换成exe文件吧!

首先,使用开发工具,创建一个jar包

第二步,去网站搜索并下载exe4j工具
大家自己去网站下载转换工具,http://www.onlinedown.net/soft/9475.htm当然,我这里是下载的是64位系统

对应的软件,下载完成之后,请解压开,并执行安装exe4j_windows-x64_5_01.exe

安装好了之后,运行exe4j Wizard程序,将出现如下界面:


直接点击“next”,进入“project type”选择页面:


选择点击“next”,进入“application configure”页面:


在这个页面中,我们需要修改3个地方,第一个输入框中,我们需要给我们打包的程序,起一个“小名儿”,

比如:狗娃儿第二个,第三个输入框中,我们都固定选择jar所在的目录即可。完成之后,再点击“next”,

进入“executableconfigure”页面中:


在这个页面中,有3个地方需要修正,第一个地方请选择“Console application”,后面在运行时,将会

出现doc窗体。第二个地方,给我们应用起一个应用名。第三个地方,主要是为了让我们的应用在进

程中只有一个。选择好后,请点击“Advanced Options”,选择其中的“32-bit or 64-bit”,进入64位软

件选择页面。


在页面中,选择按照64位的安装方式进行安装,选择好之后,连接点击2次“next”,来到最重要的配置页面:


在这张页面中,我们首先需要点击“+”号,添加我们的jar文件,然后再选择我们jar包中主入口类,也就

是包含main函数的类。选择完毕之后,大家请点击“next”,在jre版本页面中输入最低版本,比如:1.7,

那么我们的程序就不能在1.6版本上运行了。所以尽量版本设置低一点!


配置完毕之后,连续点击“next”即可完成转换工作,然后,我们打开e:/jar目录,应该就可以看到我们的exe文件了。

双击exe文件,我们就可以正常启动我们的应该程序了,O(∩∩)O哈哈哈~,开心不?

over,当然将jar文件转换为exe的方式有很多种,我这里只是介绍了其中的一种。例外,给大家需要说明的

是,如果你注意对比下jar文件与exe文件的大小,你会发现exe文件远大于你的jar文件大小。到底是不是

得不偿失?最好是综合权衡下,世上就没有十全十美的事情。

Ⅳ 软件测试总是听到 build,到底 build 指的是什么啊

Build可以认为是软件开发中不同时期编译出来的版本,其实就是开发人员把源程序打包出来的一个安装文件,很可能每天都会有新的版本出现。
生成build就是指将源代码进行打包,做成一个安装文件的形式。
测试build中的bug就是指在特定的版本下测试软件的bug。有可能在之前的build出现了问题,程序员改了下代码,让测试人员看看有没有把bug修复;或者是程序员增加了一个新的功能,让测试人员看看这个build有没有bug。

Ⅳ python的ide是什么

IDE 是 Intergreated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员开发的应用软件,是它们的一个总称。

运行 Python 语言程序必须有解释器。在实际开发中,除了运行程序必须的工具外,我们往往还需要很多其他辅助软件,例如语言编辑
器、自动建立工具、除错器等等。这些工具通常被打包在一起,统一发布和安装,例如 PythonWin、MacPython、PyCharm 等,它们
统称为集成开发环境(IDE)。
推荐学习《python教程》
因此可以这么说,集成开发环境就是一系列开发工具的组合套装。这就好比台式机,一个台式机的核心部件是主机,有了主机就能独立工
作了,但是我们在购买台式机时,往往还要附带上显示器、键盘、鼠标、U盘、摄像头等外围设备,因为只有主机太不方便了,必须有外
设才能玩的爽。

需要注意的是,虽然有一些 IDE 支持多种程序语言的开发(如 Eclipse、NetBeans、VS),但通常来说,IDE 主要还是针对某一特定的
程序语言而量身打造的(如 VB)。
一般情况下,程序员可选择的 IDE 类别是很多的,比如说,用 Python 语言进行程序开发,既可以选用 Python 自带的 IDLE,也可以选
择使用 PyCharm 和 Notepad++ 作为 IDE。

Ⅵ cython与python的不同有哪些

Cython是Python的一个超集,结合了Python的易用性和原生代码的速度,可以编译成C语言,产生的性能提升可以从几个百分点到几个数量级,具体取决于手头的任务。

使用Cython,你可以避开Python的许多原生限制,或者完全超越Python,而无需放弃Python的简便性和便捷性。

Python代码可以直接调用C模块。这些C模块可以是通用的C库或专门为Python工作的库。Cython生成第二种类型的模块:与Python内部对话的C库,可以与现有的Python代码绑定在一起。

Cython代码在设计上看起来很像Python代码。如果你给Cython编译器提供了一个Python程序,它将会按原样接受它,但是Cython的原生加速器都不会起作用。但是如果你用Cython的特殊语法来修饰Python代码,那么Cython就可以用快速的C代替慢的Python对象。

请注意,Cython的方法是渐进的。这意味着开发人员可以从现有的Python应用程序开始,通过对代码立刻进行更改来加快速度,而不是从头开始重写整个应用程序。

这种方法通常与软件性能问题的性质相吻合。在大多数程序中,绝大多数CPU密集型代码都集中在一些热点上,也就是帕累托原则的一个版本,也被称为“80/20”规则。因此,Python应用程序中的大部分代码不需要进行性能优化,只需要几个关键部分。你可以逐渐将这些热点转换为Cython,从而获得你最需要的性能提升。程序的其余部分可以保留在Python中,以方便开发人员。

相关推荐:《Python入门教程》

Cython优势

除了能够加速已经编写的代码之外,Cython还具有其他几个优点:

使用外部C库可以更快

像NumPy这样的Python软件包可以在Python界面中打包C库,使它们易于使用。但是,这些包在Python和C之间来回切换会减慢速度。Cython可以让你直接与底层库进行通信,而不需要Python(也支持C ++库)。

可以同时使用C和Python内存管理

如果你使用Python对象,它们就像在普通的Python中一样被内存管理和垃圾收集。但是如果你想创建和管理自己的C级结构,并使用malloc/free来处理它们,你可以这样做,只记得自己清理一下。

可以根据需要选择安全性或速度

Cython通过decorator 和编译器指令(例如@boundscheck(False))自动执行对C中弹出的常见问题的运行时检查,例如对数组的超出边界访问。因此,由Cython生成的C代码默认比手动C代码安全得多。

如果确信在运行时不需要这些检查,则可以在整个模块上或仅在选择功能上禁用它们以获得额外的编译速度。

Cython还允许本地访问使用“缓冲协议”的Python结构,以直接访问存储在内存中的数据(无需中间复制)。Cython的“记忆视图”可以高速地在这些结构上进行工作,并且具有适合任务的安全级别。

Cython C代码可以从释放GIL中受益

Python的全局解释器锁(Global Interpreter Lock,GIL)同步解释器中的线程,保护对Python对象的访问并管理资源的争用。但GIL被广泛批评为Python性能的绊脚石,特别是在多核系统上。

如果有一段代码不会引用Python对象并执行长时间运行,那么可以使用nogil:指令将其标记为允许它在没有GIL的情况下运行。这使得Python中间人可以做其他事情,并允许Cython代码使用多个内核(附加工作)。

Cython可以使用Python类型的提示语法

Python有一个类型提示语法,主要由linters和代码检查器使用,而不是CPython解释器。 Cython有它自己的代码装饰的自定义语法,但是最近修改了Cython,你可以使用Python类型提示语法为Cython提供类型提示。

Cython限制

请记住,Cython不是一个魔术棒。它不会自动将每一个poky Python代码变成极速的C代码。为了充分利用Cython,你必须明智地使用它,并理解它的局限性:

常规Python代码的加速很少

当Cython遇到Python代码时,它不能完全翻译成C语言,它将这些代码转换成一系列对Python内部的C调用。这相当于将Python的解释器从执行循环中提取出来,这使得代码默认加速了15%到20%。请注意,这是最好的情况。在某些情况下,可能看不到性能改善,甚至性能下降。

原生Python数据结构有一点加速

Python提供了大量的数据结构 - 字符串,列表,元组,字典等等。它们对于开发者来说非常方便,而且他们自带了自动内存管理功能,但是他们比纯C慢。

Cython让你继续使用所有的Python数据结构,尽管没有太多的加速。这又是因为Cython只是在Python运行时调用创建和操作这些对象的C API。因此,Python数据结构的行为与Cython优化的Python代码大致相同:有时会得到一个提升,但只有一点。

Cython代码运行速度最快时,“纯C”

如果你在C中有一个标有cdef关键字的函数,那么它的所有变量和内联函数调用都是纯C的,所以它的运行速度可以和C一样快。 但是,如果该函数引用任何Python原生代码(如Python数据结构或对内部Python API的调用),则该调用将成为性能瓶颈。

幸运的是,Cython提供了一种方法来发现这些瓶颈:一个源代码报告,一目了然地显示您的Cython应用程序的哪些部分是纯C以及哪些部分与Python交互。 对应用程序进行了更好的优化,就会减少与Python的交互。

为Cython应用程序生成的源代码报告。 白色区域纯C;黄色区域显示与Python内部的交互。一个精心优化的Cython程序将尽可能的黄色。 展开的最后一行显示了解释其相应Cython代码的C代码。

Cython NumPy

Cython改进了基于C的第三方数字运算库(如NumPy)的使用。由于Cython代码编译为C,它可以直接与这些库进行交互,并将Python的瓶颈带出循环。

但是NumPy特别适用于Cython。 Cython对NumPy中的特定结构具有本地支持,并提供对NumPy数组的快速访问。在传统的Python脚本中使用的熟悉的NumPy语法可以在Cython中使用。

但是,如果要创建Cython和NumPy之间最接近的绑定,则需要使用Cython的自定义语法进一步修饰代码。例如,cimport语句允许Cython代码在编译时在库中查看C级构造,以实现最快的绑定。

由于NumPy被广泛使用,Cython支持NumPy“开箱即用”。如果你安装了NumPy,你可以在你的代码中声明cimport numpy,然后添加进一步的装饰来使用暴露的函数。

Cython分析和性能

可以通过分析代码并亲眼目睹瓶颈在哪里获得最佳性能。Cython为Python的cProfile模块提供钩子,因此可以使用Python自己的分析工具来查看Cython代码的执行情况。无需在工具组之间切换;可以继续所熟悉和喜爱的Python世界中工作。

它有助于记住所有情况下,Cython不是魔术,仍然适用明智的现实世界的表现实践。在Python和Cython之间来回穿梭越少,你的应用运行得越快。

例如,如果你有一个你想要在Cython中处理的对象的集合,那么不要在Python中迭代它,并且在每一步调用一个Cython函数。将整个集合传递给你的Cython模块并在那里迭代。这种技术经常在管理数据的库中使用,因此这是在自己的代码中模拟的好模型。

我们使用Python是因为它为程序员提供了便利,并且能够快速开发。有时程序员的工作效率是以牺牲性能为代价的。使用Cython,只需要一点点额外的努力就可以给你两全其美的好处。

阅读全文

与程序员常用软件打包相关的资料

热点内容
手机app怎么下载安装 浏览:490
最新的java版本 浏览:991
万卷小说缓存在哪个文件夹 浏览:684
st单片机怎样烧 浏览:871
watch怎么下载APP 浏览:821
银行程序员面试 浏览:358
我的世界的服务器为什么不能更新 浏览:769
命令与征服绝命时刻比赛视频 浏览:827
电脑捕获视频的文件夹怎么换 浏览:482
windows编译安卓软件 浏览:210
加密dns列表 浏览:990
股市操练大全八册pdf 浏览:120
c传递指针到python 浏览:163
手动添加引导的命令 浏览:54
740服务器小蓝条是做什么的 浏览:523
linux文件操作命令 浏览:128
安卓手机图片文件夹加锁 浏览:781
steam提示音在哪个文件夹 浏览:339
项目开发全程实录pdf 浏览:532
单片机reset 浏览:597