Category Archives: Python

Python的编码习惯

本文探讨一下Python的编码习惯。写python已经有6个年头了,但是发现对于怎么写python代码很随便,所以打算整理一下规则。

关于函数的注释,python的PEP有规定,
注释应写在函数名的下面,用3个双引号开头,然后注释本身,最后以3个双引号结束

def kos_root():
    """Return the pathname of the KOS root directory."""
    global _kos_root
    if _kos_root: return _kos_root
    ...

或者

继续阅读

Posted in Python | 2 Comments

Python真正意义上的并行执行

前面我有篇文章专门介绍Python的GIL,

浅谈Python的多线程的GIL

由于Python中GIL的存在,导致Python的threading不是真正意义上的线程,那么使用python难道就真的没有办法同时在多个cpu上面执行并行执行代码了吗?并不是,首先你可以使用jython和ironPython这2个解释器,如果你不想换掉解释器的话,还想继续使用python的默认的解释器的话,python还提供了,

继续阅读

Posted in Python | Tagged | Leave a comment

浅谈Python的多线程的GIL

在谈什么是GIL之前,我们来看看Python的线程例子

import threading

def worker():
    """thread worker function"""
    print 'Worker'
    return

threads = []
for i in range(5):
    t = threading.Thread(target=worker)
    threads.append(t)
    t.start()

上面的例子中,创建了5个线程,每个线程打印Worker之后就退出了。

继续阅读

Posted in Python | Tagged | 2 Comments

python之虚拟环境 virtualenv

python之虚拟环境 virtualenv

今天我们来说说python非常强大的一个特性,其实说特性不是很准确,因为当你默认安装完python之后,其实并没有virtualenv,或者不支持虚拟环境,但是我这里我仍然喜欢称它为python 的特性,python这个名词本身不单单指语言本身,还包括了大量的库和工具,而这个工具恰恰使其有了功能。

继续阅读

Posted in Python | Leave a comment

python完成自动提交form的功能

python完成自动提交form的功能

记得刚毕业的那会儿,参加工作的第一家公司,每天下班都要通过内部系统(web)打卡的,当时觉得很麻烦所以就做了一个系统自动完成,但是使用c++调用IE访问打卡系统的网页,然后通过,鼠标移动到指定的坐标,然后在发送鼠标点击动作。这种方式很不灵活,因为一定不能让被调用IE失去焦点。也就是这个过程中电脑最好不要被动到。

今天发现了一个python的库,可以很轻松的完成这个功能,并且还能你解决我上面提到的这个问题。这个库的名字就是selenium,这个英文单词的意思是硒,是个化学元素的名字。

官方网站:

http://www.seleniumhq.org/

selenium支持的语言不只有python,还有

  • java
  • c#
  • Ruby
  • python
  • Javascript(Node)

可以在官方网站下载最新的版本,也可以使用pip提供的版本,如果使用pip提供的版本,那么先通过pip安装它

$ sudo pip install selenium

关于如何使用selenium,请参看

http://selenium-python.readthedocs.io/

下面是这个网站给出的一个简单的例子

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

继续阅读

Posted in Python, Web | Leave a comment

使Python程序的窗口不要显示出来

使Python程序的窗口不要显示出来

这个标题不是很贴切,一时半会儿想不到更好的,就先用这个。为了更好的说明这个标题要说的事情,这里我们举个例子吧,例如利用python和firefox来完成一个周期性检测一个订票系统,那么你要它一会儿调用firefox,一会儿关掉,如果这个电脑是你正在用,那么这种方式会让影响你,那么我们就想到把不要这个窗口显示出来,而是所有的工作都在后台进行。这个怎么做到呢?我们需要2个东西

  1.  Xvfb
  2.  pyvirtualdisplay

先安装他们:

$ sudo yum install -y Svfb

$ sudo pip install pyvirtualdisplay

接下面我们测试一下:

#!/usr/bin/env python

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()

display.stop()

继续阅读

Posted in Python, Web | Leave a comment

利用boost::python使c/c++和python的交互更加方便了

之前本博客有介绍如何在python中调用的c的动态库

继续阅读

Posted in C/C++, Python | Tagged | Leave a comment

让python支持ssl – IT夜班车

让python支持ssl

如果你的python不支持ssl的话,在跟https协议打交道的时候就会出错。如何来检测当前python是否支持ssl呢?

$ /usr/local/bin/python
Python 2.7.3 (default, Mar 10 2015, 17:21:03)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> hasattr(socket, 'ssl')
False
>>>

如果上面输出是False表示不支持,如果是True表示支持。

我上面的输出是False。

接下来就是下载openssl,从官网

www.openssl.org


然后解压

tar zxf openssl-0.9.8g.tar.gz
cd openssl-0.9.8g
./config
make
make install

接下来就是下载python的源代码,我么你选择 2.7.3

tar zxf Python-2.7.3.tgz && cd Python-2.7.3

然后更改文件 Modules/Setup.dist,把206到209这3行反注释(默认是被注释掉的),然后保存

204:# Socket module helper for SSL support; you must comment out the other
205:# socket line above, and possibly edit the SSL variable:
206:SSL=/usr/local/ssl
207:_ssl _ssl.c \
208:    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
209:    -L$(SSL)/lib -lssl -lcrypto</pre>

继续阅读

Posted in Python | Leave a comment

监测程序的cpu使用率 – IT夜班车

监测程序的cpu使用率

下面的python脚本程序用来统计某个程序的在某一段时间的cpu的使用率,然后画出一张统计表,并且保存成cpu,这样就不用你用肉眼一直使用top来查看。由于本博客禁止复制代码,所以这里我提供大家下载此份代码

下载代码

下载之后将后缀改为py,也就是最后为

继续阅读

Posted in Python | Leave a comment

pylab 在非X-Window不能工作

pylab 在非X-Window不能工作

前面我们有说过在python如何使用pylab生成matlab中一些图形:

python生成matlab的曲线图,饼图,柱状图

上面文章提到的代码工作的前提是有X-Window的支持,因为pylab是将图形画在X-Window上面,即使你没有使用

继续阅读

Posted in Python | Tagged | Leave a comment