
Python
文章平均质量分 83
offbye
西涛,全栈工程师,架构师,Android和HTML5专家。熟悉Java、Android、JavaScript、Python、Swift等技术。目前专注手机端侧人工智能研究,熟悉tensorflow
展开
-
python fork多线程进程时的坑
Python在fork多线程的进程时,创建的子进程只包含一个线程,该线程是调用fork函数的那个线程的副本。在man fork中,有The child process is created with a single thread—the one that called fork().这句话,亲测的确如此。在多线程进程中,为了多线程的同步及互斥,会有锁,在fork时,这些锁会一同fork到子进程中,这会导致一些问题,见下文。个人建议,最好不要fork多线程的进程,除非你有能力解决这个问题。在python的m转载 2022-02-16 17:15:20 · 1071 阅读 · 0 评论 -
Python Gevent和协程机制
参考资料http://www.gevent.org/contents.htmlhttps://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Gevent.htmlPython脚本的执行效率一直来说并不是很高,特别是Python下的多线程机制,长久以来一直被人们诟病。很多人都在思考如何让Python执行的更快一些,其中典型的方式包括:将复杂的代码转由C语言完成多进程并发执行多线程完成IO操作然后,人们讨论的更多的则是Gevent的协程机制。在理解Gevent转载 2021-12-11 12:01:44 · 875 阅读 · 0 评论 -
多线程让可扩展性走进了死胡同
原文 http://www.jdon.com/46672这是一篇来自Python世界的文章,但是对整个编程领域还是适用的,多线程虽然让我们处理请求更快,但是也是有天花板的,绿色(微线程micro-thread)线程之类才是解决方案。多线程软件开发解决了大量的问题,尤其是以网络为中心的应用程序,这些程序需要严苛的性能快速响应用户。不幸的是,多线程并不足以解决大规模并发性的问题。转载 2014-09-17 14:57:42 · 1271 阅读 · 0 评论 -
涛哥的Python脚本工具箱之生成带Logo的二维码
最近需要在二维码上加Logo,网上没有找到好用的,于是自己用python写了一个。需要安装qrcode,PIL库二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于 1994 年发明。现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询、社交好友互动、网络地址访问等等。安装原创 2014-10-28 14:39:09 · 3455 阅读 · 0 评论 -
参加PyCon2014有感
PyCon 是全球 Pythoneer 最盛大的年度聚会,由 PSF(Python 基金会)支持,致力于营造愉快的多元化的 Python 技术主题大会. PyConChina 是由 CPyUG(华蠎用户组)获得授权举办的 中国PyCon 年会. 迄今已是第四届, 继续由 CPyUG/TopGeek/GDG 协同,在北京/上海/珠海/苏州/杭州 五城联办. 无论使用哪种,都可以/应该参加这场完全原创 2014-11-18 17:49:27 · 1757 阅读 · 0 评论 -
Python使用ElementTree处理xml文件
在Python中一般情况我们应该使用ElementTree处理xml文件,ElementTree从Python 2.5开始成为标准模块。一般情况指的是: XML 文件大小适中,对性能要求并非非常严格。下面讲解如何通过ElementTree来操作XML;1.引入库需要用到3个类,ElementTree,Element以及建立子类的包装类SubElement try:原创 2014-10-16 16:23:21 · 2114 阅读 · 0 评论 -
python 中的mixin特性
python支持多继承后,但能否支持动态继承性质?在程序运行过程中,重定义类的继承,python是支持这种动态继承性质的。这也就是python中 的mixin,在定义类过程中改变类的继承顺序,继承类。当某个模块不能修改时,通过mixin方式可以动态添加该类的方法,动态改变类的原有继承体系。 弄懂了多继承,mixin特性就简单多了。 但需要注意mixin后的具体继承体系的改变。转载 2015-06-15 13:17:11 · 3321 阅读 · 0 评论 -
Python高效率编程的8条箴言
Python作为一门动态语言,提供了很多语法糖,有助于我们以很短的代码实现复杂的功能。另一方面,Python的历史悠久,积累了大量高效易用的库,基本上常见的任务都有对应的工具库。善用Python的语言特性,我们可以写出Pythonic的代码,下面探讨一下如何写出高效率的Python代码原创 2015-07-28 22:00:45 · 2226 阅读 · 0 评论 -
Python的Lambda函数与排序
前几天看到了一行求1000的阶乘的Python代码Python代码print reduce(lambda x,y:x*y, range(1, 1001)) 一下子被python代码的精简与紧凑所折服,故对代码进行了简单的分析。reduce与range都是Python的内置函数。range(1,1001)表示生成1到1000的连续整数列表(Li转载 2015-07-23 08:38:01 · 1163 阅读 · 0 评论 -
python字符串连接
Python字符串连接有几种方法,把大家可能用到的列出来,第一个方法效率是最低的,另外给大家介绍后面的 2种效率高的方法,希望对大家有帮助。先介绍下效率比较低的,也是比较直接的方式,大量操作是不要用这个方法:a = ['a','b','c','d']content = ''for i in a: content = content + i pri原创 2015-07-23 14:56:23 · 1014 阅读 · 0 评论 -
树莓派的PWM脉宽调制功能介绍
最近想用树莓派控制航模的电调,于是研究了下PWM,貌似控制电调比较麻烦,因为电调需要发送几个特定的信号启动,然后才能进入控制模式,今天先弄明白PWM,慢慢折腾。下面的程序亲测可用,我用的树莓派model B,12GPIO口是外面第6个针。 脉宽调制(PWM)是指用微处理器的数字输出来对模拟电路进行控制,是一种对模拟信号电平进行数字编码的方法。在树莓派上,可以通过对GPIO的编程来实现PWM。原创 2015-07-24 22:10:13 · 16303 阅读 · 3 评论 -
Python读取iOS安装包IPA中的信息和图片
最近需要对所有的iOS和Android工程通过jenkins持续集成,软件的编译、打包、企业分发版的ipa发布都需要自动化。在做ipa自动化发布时,需要拿到一个app里面相关的信息,比如显示名称、版本号、bundle identifier等等。 然后在Jenkins构建任务中通过增加Python脚本针对每个版本生成IPA,plist和包含itms安装链接的网页。首先需要对iOS ipa包的结构有些原创 2016-05-28 21:23:48 · 6629 阅读 · 1 评论 -
Python爬虫突破封禁的6种常见方法
在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长。今天大众好像更倾向于用“网络数据采集”,有时会把网络数据采集程序称为网络机器人(bots)。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其他网页文件),然后对数据进行解析,提取需要的信息。本文假定读者已经了解如何用代码来抓取一个远程的URL,并具备表单如何提交及JavaScript在浏览器如何运行转载 2016-08-17 22:36:59 · 63297 阅读 · 8 评论 -
PyCon2016上海站参会感想
2016年9月10日早上5点多做高铁去上海参加PyCon2016大会,这是我第二次参加PyCon大会,上一次是2014年,我觉得这是一个比其它的技术大会有意思的大会。在拖了整整一个月后,今天终于抽时间把参会感想整理出来了。PyCon大会是Python语言社群全球性的盛会,PyConChina是由CPyUG(华蠎用户组)获得授权举办的中国PyCon年会。本次大会的主题是Pythonic, C’est原创 2016-10-12 18:51:23 · 1115 阅读 · 0 评论 -
Scrapy爬虫框架介绍
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。转载 2017-10-27 22:21:07 · 1614 阅读 · 0 评论 -
python virtualenv虚拟环境介绍
最近折腾tensorflow的编译安装,重新用virtualenv, 发现生疏了,就简单记录下吧在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而原创 2017-11-29 20:30:58 · 2268 阅读 · 0 评论 -
Python你必须知道的十个库
英文原文:Python modules you should know Python 是优雅的,使用这些库可以使你的代码更简洁,并保持持久性。欢迎各位补充,并提出意见! Docopt。抛弃optparse和argparse吧,使用docstrings来构建优雅的,可读性强的,并且复杂(如果你需要的话)的命令行界面。IMO2013 年创建的最好的库。 Request转载 2014-09-04 13:42:21 · 1492 阅读 · 0 评论 -
涛哥的Python脚本工具箱之批量替换目录所有指定扩展名的文件中的指定字符串
今天发布刚完成的涛哥的Python脚本工具箱之批量替换目录所有指定扩展名的文件中的指定字符串,命令行参数处理改用目前比较好用的argparse库,Python代码如下:#!/usr/bin/python2.7# -*- encoding: UTF-8 -*-# Copyright 2014 offbye@gmail.com"""replace old string with原创 2014-09-04 17:24:35 · 2688 阅读 · 0 评论 -
greenlet: Lightweight concurrent programming
MotivationThe “greenlet” package is a spin-off of Stackless, a version of CPython that supports micro-threads called “tasklets”. Tasklets run pseudo-concurrently (typically in a single or a few OS转载 2014-09-17 15:05:13 · 1569 阅读 · 0 评论 -
使用 Docker 作为 Python 开发环境
本文中,我将尝试展示用Docker开发python应用(主要是Web应用)的可行方法。虽然我本人专注于Python的Flask微框架,但本文目的是演示如何通过Docker更好地开发和共享应用程序,(由任何语言和框架开发的应用程序)。Docker通过封装依赖项,大大减少了开发环境和正式产品的差距。大多数Python开发人员在开发中使用virtualenv。它提供了一种易用的机制让应用程序使用转载 2014-08-08 12:16:09 · 1721 阅读 · 0 评论 -
python greenlet背景介绍与实现机制
最近开始研究Python的并行开发技术,包括多线程,多进程,协程等。逐步整理了网上的一些资料,今天整理一下greenlet相关的资料。 并发处理的技术背景 并行化处理目前很受重视, 因为在很多时候,并行计算能大大的提高系统吞吐量,尤其在现在多核多处理器的时代, 所以像lisp这种古老的语言又被人们重新拿了起来, 函数式编程也越来越流行。 介绍一个python的并行处理的一个库原创 2014-09-18 10:53:56 · 5074 阅读 · 1 评论 -
Python 守护进程
守护进程:通常被定义为一个后台进程,而且它不属于任何一个终端会话(terminal session)。许多系统服务由守护程序实施;如网络服务,打印等。 下面是转自一位网友写的编写守护进程的步骤: 1. 调用fork()以便父进程可以退出,这样就将控制权归还给运行你程序的 命令行或shell程序。需要这一步以便保证新进程不是一个进程组头领进程(process gro转载 2014-08-21 15:27:12 · 1464 阅读 · 0 评论 -
Python编码规范整理
1、不要使用小写字母'l'(el),大写字母'O'(oh),或者小写'i'作为单独变量名称。因为一些字体中,上诉字母和数字很难区分(比如:O和0,l和1)。2、Module应该采用全小写,并且尽可能短的命名,可以在模块名中使用下划线以提高可读性。Package应该采用全部小写,并且也要尽可能短的命名,但不允许使用下划线。当一个用C 或C++ 写的扩展模块,有一个伴随的Python 模块来提供一转载 2014-08-12 10:53:15 · 1264 阅读 · 0 评论 -
python编写shell脚本详细讲解
今天需要编写一个shell脚本实现App自动生成的功能,需要处理HTTP REST请求,解析JSON,处理文件,执行命令等,本来想用shell搞定,但感觉比较麻烦,还是用python吧,虽然以前用Python都是在树莓派上玩的,多尝试一种方法总是好的。 虽然我受linux的影响甚深,但是对于*nix 里随处可见的sh脚本却是讨厌之极。为什么讨厌呢?首先是因为sh脚本那莫名其妙的语法原创 2014-08-11 16:54:57 · 5779 阅读 · 0 评论 -
Python 最好用的第三方 http 库-Requests介绍
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 哦!Beautiful转载 2014-08-13 10:23:00 · 2304 阅读 · 0 评论 -
用python给文件夹下所有图片进行缩放处理
#! /usr/bin/env python # -*- coding: UTF-8 -*- #@author zcwang3@gmail.com#@version 2010-10-20 15:47#图片处理模块(缩放)import BaseUtilimport osimport ImagesrcImgFolder = srcImgFolder = r"D:\javaResiz转载 2014-08-13 15:03:05 · 2662 阅读 · 0 评论 -
Linux CentOS 6.5服务器上安装pip,requests库
今天在服务器上部署Python程序,发现服务器上缺Requests库,于是设法装上,CentOS版本怎么安装Python的pip,我之前给出的Ubuntu下apt-get的方法首先看下服务器系统版本# cat /etc/issueCentOS release 6.5 (Final)Kernel \r on an \m首先需要先安装下pipyum install py原创 2014-09-10 10:44:56 · 9832 阅读 · 0 评论 -
使用 Python 进行稳定可靠的文件操作
使用 Python 进行稳定可靠的文件操作程序需要更新文件。虽然大部分程序员知道在执行I/O的时候会发生不可预期的事情,但是我经常看到一些异常幼稚的代码。在本文中,我想要分享一些如何在Python代码中改善I/O可靠性的见解。考虑下述Python代码片段。对文件中的数据进行某些操作,然后将结果保存回文件中:1with open(filenam转载 2014-08-14 10:30:09 · 1464 阅读 · 0 评论 -
python 的日志logging模块介绍
最近在写使用python生成App的程序,发现直接用print打印信息不太方便和规范,所以使用了logging日志模块,简单记录下用法,正式项目中应该使用logging.config配置日志,可以实现类似log4j的日志文件大小限制,格式控制,输出位置等。1.简单的将日志打印到屏幕 import logginglogging.debug('This is deb原创 2014-08-15 17:55:31 · 1727 阅读 · 0 评论 -
Python学习之字典详解
在元组和列表中,都是通过编号进行元素的访问,但有的时候我们按名字进行数据甚至数据结构的访问,在c++中有map的概念,也就是映射,在python中也提供了内置的映射类型--字典。映射其实就是一组key和value以及之间的映射函数,其特点是:key的唯一性、key与value的一对多的映射。1.字典的创建 字典的基本形态dic={key1:value1, key2:value2.转载 2014-09-12 13:03:08 · 1254 阅读 · 0 评论 -
Python多进程编程相关技术
由于Python的线程有些限制,例如多线程不能充分利用多核CPU等问题,因此在Python中我们更倾向使用多进程。但在做不阻塞的异步UI等场景,我们也会使用多线程。本篇文章主要探讨Python多进程的问题。 Python在2.6引入了多进程的机制,并提供了丰富的组件及api以方便编写并发应用。multiprocessing包的组件Process, Queue, Pipe, Lock等组件提供了与多线程类似的功能。使用这些组件,可以方便地编写多进程并发程序。原创 2014-09-15 13:45:52 · 1597 阅读 · 0 评论 -
涛哥的Python工具箱之批量删除含指定字符串行
对于一个出色的程序员来说,重复是最不能接受的事情之一,因此我们要发明工具把重复的工作自动化。以前我是用linux shell脚本来完成这些事情的,但由于shell脚本语法能力的限制,有些复杂功能无法有效快速的实现,并且写出的代码难以维护,基本属于一次性代码,很难复用。因此后面慢慢开始尝试用Python完成一些自动化脚本,由于Python语言强大的表现力和严格的书写规范,这些缺点都解决了! 最近打算把一些日常研发过程用的Python脚本逐步整理出来开源,于是就有了这个专题,希望能够帮助大家摆脱那些原创 2014-09-02 12:39:01 · 3410 阅读 · 0 评论 -
深入理解Python的包机制
最近在重构Python代码时,感觉代码只分割到文件有点不够用了,但以前对Python的包机制一直缺乏比较深入的理解,借此机会提升一下,彻底弄清楚Python的包机制,更好组织代码结构。后面逐渐把Python工具箱使用包组织起来。 Python中的Module是比较重要的概念。常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目原创 2014-09-03 16:19:08 · 4372 阅读 · 0 评论 -
Python的包管理工具
刚开始学习Python时,在看文档和别人的blog介绍安装包有的用easy_install, setuptools, 有的使用pip,distribute,那麽这几个工具有什么关系呢,看一下下面这个图就明白了可以看到distribute是setuptools的取代,pip是easy_install的取代。 关于这些包工具可以参考 http://guide.pyt转载 2014-09-03 11:13:51 · 1215 阅读 · 0 评论 -
PYTHON中寻找MODULE的顺序
python在import module的时候 是按照以下顺序去import一个module的:1. 首先判断这个module是不是built-in即内建模块, 如果是则引入内建模块,如果不是则在一个称为sys.path的list中寻找 2. sys.path在python脚本执行时动态生成,包括以下3个部分: a.脚本执行的位置转载 2014-08-04 10:53:10 · 2287 阅读 · 0 评论