本文主要记录在Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录
前言
GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务.可通过Web界面进行访问公开的或者私人项目,它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释.可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库,团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用.
More than code
本文主要记录在Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录
GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务.可通过Web界面进行访问公开的或者私人项目,它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释.可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库,团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用.
快来动手试试吧,简直太棒了
Cookiecutter可以让你快速从模板中建立工程,cookiecutter-django则是Django的模板,可以快速生成Django
大型项目模板。其特性如下:
python协程的演化
Python由于众所周知的GIL
的原因,同一时刻只能有一个线程在运行,那么对于CPU密集的程序来说,线程之间的切换开销就成了拖累,而以I/O为瓶颈的程序正是协程所擅长的:
多任务并发(非并行),每个任务在合适的时候挂起(发起I/O)和恢复(I/O结束)*
Python中的协程经历了很长的一段发展历程。其大概经历了如下三个阶段:
考虑用concurrent.futures来实现平行计算或并发处理
编写Python程序时,我们可以利用CPU的多核心通过平行计算来提升计算任务的速度。很遗憾,Python的全局解释器(GIL
)的存在使得我们没有办法用线程
实现真正的平行计算。
为了实现平行计算,我们可以考虑用C语言扩展或者使用诸如Cython
和Numba
等开源工具迁移到C语言。但是这样做大幅增加了测试量和风险。于是我们思考一下:有没有一种更好的方式,只需使用少量的Python代码,即可有效提升执行效率,并迅速解决复杂的计算问题。
我们可以试着通过内置的concurrent.futures
模块来利用内置的multiprocessing
模块实现这种需求。这样的做法会以子进程的形式,平行运行多个解释器,从而利用多核心CPU来提升执行速度(子进程与主解释器相分离,所以它们的全局解释器锁也是相互独立的)。
考虑用协程来并发的运行多个函数
我们可以用线程来运行多个函数,使这些函数看上去好像是在同一时间得到执行的。然而,线程有三
个显著的缺点:
Lock
, Queue
等)来协调这些线程,这使得多线程的代码,要比单线程的过程式代码更加难懂。这些复杂的多线程代码,会逐渐令程序变得难以扩展和维护。占用大量内存
,每个正在执行的线程,大约占据8MB
内存。如果只开十几个线程,多数计算机还是可以承受的。启动的开销比较大
。如果程序不停地依靠创建新线程来同时执行多个函数,并等待这些线程结束,那么使用线程所引发的开销,就会拖慢整个程序的速度。