1.GIL与线程调度
Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用
为了支持多线程机制,一个基本的要求就是需要实现不同线程对共享资源访问的互斥,所以引入了GIL。
GIL:在一个线程拥有了解释器的访问权之后,其他的所有线程都必须等待它释放解释器的访问权,即使这些线程的下一条指令并不会互相影响。
在调用任何Python C API之前,要先获得GIL
GIL缺点:多处理器退化为单处理器;优...
分类:
编程语言 时间:
2014-06-25 19:48:52
阅读次数:
358
monkey patch (猴子补丁) 用来在运行时动态修改已有的代码,而不需要修改原始代码。简单的monkey patch 实现:[python]#coding=utf-8def originalFunc(): print 'this is original function!'def modif...
分类:
编程语言 时间:
2014-06-24 22:50:22
阅读次数:
463
SyntaxError: Non-ASCII character '\xe5' in file a.py on line 9, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details在文件头...
分类:
编程语言 时间:
2014-06-24 22:13:37
阅读次数:
443
看到一篇博文写lambda和reduce函数,笔者小痒了一下,用Python实现一下:
#! /usr/bin/env python
# -*-coding:utf-8-*-
import time
import math
def test_reduce():
start_time = time.clock()
print reduce[A1] (lam...
分类:
编程语言 时间:
2014-06-24 20:37:10
阅读次数:
272
1.首先实现命令行下可运行mysql 这一部分网上有一位大神说的已经很清楚了,直接引用过来,多谢哈。引用:http://www.lihui.info/mac-pydev-mysqldb/ 在mac os上安装MySQLdb,遇到了很多问题,总结一下: 首先,如果用sudo easy_install mysql-python命令安装,...
分类:
数据库 时间:
2014-06-24 19:41:29
阅读次数:
357
heapq模块实现了python中的堆排序,并提供了有关方法。让用Python实现排序算法有了简单快捷的方式。
heapq的官方文档和源码:8.4.heapq-Heap queue algorithm
下面通过举例的方式说明heapq的应用方法
实现堆排序
#! /usr/bin/evn python
#coding:utf-8
from heapq import *
def ...
分类:
编程语言 时间:
2014-06-24 18:47:47
阅读次数:
403
可以用+, 跟C#一样,效率有问题,用join,join的用法如下:print '张三丰'.join('lisi') 打印出的会是:l张三丰i张三丰s张三丰i那么要拼接怎么搞呢?for d in os.listdir('d:\\'): print ':::'.join([d,'file' i...
分类:
编程语言 时间:
2014-06-24 15:07:16
阅读次数:
230
yuminstallruby yuminstallrubygems yum install ruby-develgem install rdiscountyum install python-pygmentsgem install jekyll
分类:
其他好文 时间:
2014-06-24 12:48:23
阅读次数:
207
概括setuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,它 是一组Python的 distutilsde工具的增强工具(适用于 Python 2.3.5 以上的版本,64 位平台则适用于 Python 2.4 以上的版本),可以让程序员...
分类:
编程语言 时间:
2014-06-24 12:08:05
阅读次数:
1613
异步网络据说能极大的提高网络server的连接速度,所以打算写一个专题,来学习和了解异步网络.因为Python有个非常出名的异步Lib:Twisted,所以就用Python来完成.OK,首先写一个pythone socket的server段,对开放三个端口:10000,10001,10002.kro...
分类:
编程语言 时间:
2014-06-24 12:06:39
阅读次数:
176