Python多线程编程 纸上得来终觉浅,绝知此事要躬行。 1. 基础知识 学习多线程、多进程编程之前,必须要先补充或者复习一下相关的基础知识,这样到后面应用的时候,就能够比较顺利了。其实对我来说,基础知识最好使用实体书籍,因为这才是心血的结晶,而并不是像培训班老师讲的那些,他们大多数都在瞎扯淡。 1.1 进程和线程 什么是进程 Linux 是一个多用户、多任务的操作系统,这就意味着一次可以运行一个以上的程序,每个占用一定 开发运维 2022-09-30 Escape
Python多进程编程 纸上得来终觉浅,绝知此事要躬行。 1. 多进程编程 由于全局解释锁(GIL)的问题,多线程并不能充分利用多核处理器,如果是一个CPU计算型的任务,应该使用多进程(multiprocessing)模块。虽然两者的工作方式并不相同,但是接口却非常相似。使用多进程模块,给每个进程赋予了单独的Python解释器,这样就规避了全局解释锁带来的问题。 1.1 多进程的使用方式 我们这里只介绍一下基本的使用方式 开发运维 2022-09-30 Escape
Python中使用concurrent类 纸上得来终觉浅,绝知此事要躬行。 在多线程或多进程编程中,不可避免的需要使用start、join等方法,复杂的话还需要使用一到两个队列才能完成要求。如果没有一个良好的设计,随着代码量越来越多,会变得越来越复杂。而没有没有什么东西,可以将上述这些步骤抽象一下,让我们不关注这些细节轻装上阵呢? futures - 异步执行任务 futures - 官方文档说明 futures 管理的并发任务池 使用 开发运维 2022-09-30 Escape
Python异步编程和事件驱动 纸上得来终觉浅,绝知此事要躬行。 1. 异步编程 [1] 同步和异步描述的是进程/线程的调用方式 同步和异步 同步调用指的是线程发起调用后,一直等待调用返回后才继续执行下一步操作,这并不代表CPU在这段时间内也会一直等待,操作系统多半会切换到另一个线程上去,等到调用返回后再切换回原来的线程。 异步就相反,发起调用后,线程继续向下执行,当调用返回后,通过某种手段来通知调用者。 解释和说明 我们需要注 开发运维 2022-09-30 Escape
Python异步编程asyncio模块 纸上得来终觉浅,绝知此事要躬行。 1. 引言 官网对asyncio的描述不同于其他标准库模块,只主要罗列了如下四个关键词,即表达这个模块融合了这些技术或包含了这些功能。 第一个就是**异步I/O**,当代码需要执行一个耗时的操作的时候,它只发出I/O的执行,并不等待I/O的结果,然后就执行其他的代码,这样可以提高效率。 第二个就是事件循环,把基本的I/O操作(如读和写)转化为需要处理的事件,通过事 开发运维 2022-09-30 Escape
Python网络编程入门 纸上得来终觉浅,绝知此事要躬行。 自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了。计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信。用 Python 进行网络编程,就是在 Python 程序本身这个进程内,连接别的服务器进程的通信端口进行通信。 socket - create an endpoint for communication 1. TCP/I 开发运维 2022-09-30 Escape
Python网络编程进阶 纸上得来终觉浅,绝知此事要躬行。 使用socket进行TCP和UDP编写的程序,其实只能说是一种玩具。因为服务端一次只能接收一个客户端的连接,再多的客户端连接会被阻塞掉。深层原因是,代码中调用了accept、recv、send等方法,都会发生阻塞,导致无法响应多个客户端连接。而现实环境中大都是多客户端甚至多服务端,那怎么让服务端同时响应多个客户端的请求呢? 1. 编程基础知识 真正的程序 = I/ 开发运维 2022-09-30 Escape
将已有项目推到Github仓库 Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 1.打开终端切换到已存在项目的目录进行初始化 # 初始化本地仓库 $ git init 2.把工程所有文件都添加到该仓库中 # 添加文件 $ git add . 3.把文件提交到本地仓库 # 提交 开发运维 2022-09-30 Escape
Git不能忽略文件及目录 纸上得来终觉浅,绝知此事要躬行。 问题描述 今天早上在 Git 上提交代码,在网页中发现提交的仓库中多了一个隐藏文件。所有想通过配置 .gitignore 文件,将其进行隐藏,结果配置了之后发现还是没有什么效果。Google 上搜了下,发现原来是下来这个问题。 问题原因 .gitignore文件无法忽略已提交的目录或文件 解决方法 [方法一] 删除需要忽略的目录或文件并 push 到服务器上 [方 开发运维 2022-09-30 Escape
Git提示请求失败 纸上得来终觉浅,绝知此事要躬行。 前几天在 CentOS6 安装 gitlab 工具,在克隆代码的时候,发生报错了。查了很多资料之后,最后才发现是官方自带的 Git 版本太低了导致无法使用的。既然已经有了前车之鉴,所以这里总结一下,出现上述报错的情况下,正确的解决方案和处理思路。 【报错信息如下所示】 # 报错信息 fatal: HTTP request failed 【原因一】Git 版本过低 开发运维 2022-09-30 Escape
我的Git学习笔记 学好 Git 的使用,有助于提高生产力。 Git 是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于 2005 年以 GPL 发布。最初目的是为更好地管理 Linux 内核开发而设计。 日常使用只要记住 6 个命令就可以,但熟练就需要要记住 60~100 个命令。 虽然我很早就开始使用 Git 来管理我的代码,但是却一直没有总结。最近正好重新整理自己的开发环境,顺便把对应的知识点梳理成博客文章 开发运维 2022-09-30 Escape
解决Git更新代码冲突问题 学好 Git 的使用,有助于提高生产力。 一如既往的使用 Git 来管理自己的代码仓库,但是今天忘记先讲远程仓库的代码 git pull 到本地,就直接开始编写代码。等写到一半的时候,突然想起来了还没有 pull 代码。果然执行同步的时候,遇到了冲突,如下图所示。 我们可以看到执行报错了,大致意思就是我本地修改的代码文件,将会被远程仓库上的代码覆盖。当然,我不想刚刚写的代码就被这样给覆盖掉,看看怎 开发运维 2022-09-30 Escape
Git的工作流程 拥有一个良好的工作流程会让整个团队提高工作效率,并且会有一股自然清新的感觉。 主要参考来自《Git 工作流程》 次要参考来自《Git 使用规范流程》 次要参考来自《深入理解学习 Git 工作流》 1. 分支管理 如何合理的规划代码仓库分支? 团队开发中,遵循一个合理、清晰的 Git 使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的 commit,项目很快就会变得难以协调和维护。 [1] d 开发运维 2022-09-30 Escape
我用Git摘樱桃 在日常的工作中,一般稍微正规点的公司都会遵守git flow的。对应不同功能的需求,都会建立新的分支进行开发。完成开发并测试没有问题之后,才提出 pr 请求 @对应核心开发,最后才会合入主干分支。 1. 引入原因 请问,你的梦想是什么? 当我们发现程序中存在 Bug 的时候,在对应分支进行了修改,但是发现这个问题其实每个分支都存在,这个时候就需要使用到 cherry-pick 这个功能了。 顾名思 开发运维 2022-09-30 Escape
使用Git进行大文件存储 纸上得来终觉浅,绝知此事要躬行。 大文件存储(LFS)是可以把音乐、图片、视频等指定的任意文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替的小工具。通过把大文件存储在 Git 仓库之外,可以减小 Git 仓库本身的体积,使克隆 Git 仓库的速度加快,也使得 Git 不会因为仓库中充满大文件而损失性能。 LFS 官方文档使用手册 1. 背景介绍 Git 开发运维 2022-09-30 Escape
熟悉使用Git子模块 成也子模块,败也子模块 经常有这样的事情,当你在一个项目上工作时,你需要在其中使用另外一个项目。也许它是一个第三方开发的库或者是你独立开发和并在多个父项目中使用的。这个场景下一个常见的问题产生了:你想将两个项目单独处理但是又需要在其中一个中使用另外一个。Git 通过子模块处理这个问题。子模块允许你将一个 Git 仓库当作另外一个 Git 仓库的子目录。这允许你克隆另外一个仓库到你的项目中并且保持你 开发运维 2022-09-30 Escape
Git子模块提交冲突问题 纸上得来终觉浅,绝知此事要躬行。 今天更新项目的时候,使用 git submodule 进行 update 的时候,出现下面的错误信息。通过字面上面的意思,说是主项目中记录的 submodule 的 HEAD 超前,导致找不到指定的 commit 信息。 # 子模块更新报错 $ git submodule update Submodule path 'project1': checked out 开发运维 2022-09-30 Escape
Git常见零碎问题汇总 这里主要记录在日常使用 Git 时,遇到的一些零碎问题。不易写成独立文章,所以统一记录于此。 1. Git 分支已经删除 远程获取分支最新代码,提示远程分支已经不存在了 问题描述:下拉代码的时候提示分支不太对。 # 获取最新代码报错 ➜ git pull Your configuration specifies to merge with the ref 'refs/heads/ipo_user' 开发运维 2022-09-30 Escape
Git使用的奇技淫巧 大多数命令和使用技巧都是参考自《Git 的奇技淫巧》,如有侵权即刻删除。 1. Git 版本对比相关操作 这是一个完美的备注信息! [1] 输出工作区和暂存区的不同。 git diff [2] 展示暂存区和最近版本的不同 git diff --cached [3] 展示暂存区、工作区和最近版本的不同 git diff HEAD [4] 展示本地仓库中任意两个 commit 之间的文件变动 git 开发运维 2022-09-30 Escape
Git签署工具使用 截取自《git-scm.com》,如有侵权即刻删除。 签署标签与提交很棒,但是如果决定在正常的工作流程中使用它,你必须确保团队中的每一个人都理解如何这样做。如果没有,你将会花费大量时间帮助其他人找出并用签名的版本重写提交。在采用签署成为标准工作流程的一部分前,确保你完全理解 GPG 及签署带来的好处。 1. GPG 安装 这是一个完美的备注信息! MacOS # 安装工具 $ brew unins 开发运维 2022-09-30 Escape