1.GIL与线程调度
Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用
为了支持多线程机制,一个基本的要求就是需要实现不同线程对共享资源访问的互斥,所以引入了GIL。
GIL:在一个线程拥有了解释器的访问权之后,其他的所有线程都必须等待它释放解释器的访问权,即使这些线程的下一条指令并不会互相影响。
在调用任何Python C API之前,要先获得GIL
GIL缺点:多处理器退化为单处理器;优...
分类:
编程语言 时间:
2014-06-25 19:48:52
阅读次数:
358
标准库:一些最爱
sys
sys这个模块让你能够访问与python解释器联系紧密的变量和函数。
sys模块中一些重要的函数和变量
函数/变量 描述
argv 命令行参数,包括脚本名称
exit([arg]) 退出当前程序,可选参数为给定的返回值或者错误信息
modules 映射模块名字到载入模块的字典
path 查找模块所在目录的目录名列表
platform 类似sunos5或...
分类:
编程语言 时间:
2014-06-25 19:21:36
阅读次数:
230
这篇文章主要介绍了Python程序员代码编写时应该避免的17个“坑”,也可以说成Python程序员代码编写时应该避免的17个问题,需要的朋友可以参考下
一、不要使用可变对象作为函数默认值
复制代码代码如下:
In [1]: def append_to_list(value, def_list=[]):
...: def_list.append(va...
分类:
编程语言 时间:
2014-06-24 23:35:15
阅读次数:
302
问题
归并排序是一种常用的排序方法,本文讲述了其基本思想以及用python实现的方法。
在python中,有一个非常强大的模块heapq,提供了merge方法,让归并排序在python中更简单了。
思路说明
归并操作过程:
1. 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
2. 设定两个指针,最初位置分别为两个已经排序序列的起始位置
3. 比较两...
分类:
编程语言 时间:
2014-06-24 21:07:01
阅读次数:
269
/*
混合C++、JS、python、Lisp、汇编
1种语言,5种语法
*/
main
{
//C++
vector v;
v.push(2);
putsl(v.size());
if(v.count()==1)
{
putsl("abc");
}
//JS
var a=function(x){
return x*2;
}
putsl(a(3));
a={90...
分类:
编程语言 时间:
2014-06-24 20:39:10
阅读次数:
307
1.线程环境初始化
图13-1
Py_InitializeEx,Python会首先调用 PyInterpreterState_New创建一个崭新的PyInterpreterState对象。
图13-2
创建了PyInterpreterState(进程状态)对象之后,Python会调用PyThreadState_New创建PyThreadState(线程状态)对象
图13-3
全局变量_PyThreadState_Current维护着当前活动的线程
PyInterpreterState对象中维护着所有的PyT...
分类:
编程语言 时间:
2014-06-24 20:19:50
阅读次数:
335
人生苦短,我用python,最近实习一直在用工作,因为我做的工作涉及到海量数据,程序跑下来用上代理,一个月可能也跑不完,但是我快要回去考试两周,作为一个强迫症的coder,我必须要得知我的程序怎么了!!!所以我让我的程序成功执行一段时间,但是我又是非常“懒惰”的人(其实优秀的程序员都要很“懒惰”呢!坚决写简洁的代码,如果可以,越短越好,所以前短时间写了个160行的py 2048.),看了好多版本,...
分类:
编程语言 时间:
2014-06-24 19:42:11
阅读次数:
205
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
看了2个blog后还是没闹明白 因为Django的东西 所以自己写了test的例子终于明白了
首先给出结论---->别人总结的可惜一开始没闹明白:
1. super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,
产生了一个super对象;
2. super类的初始化函数并没有做什么特殊的操作,只是简单记录了类类型和具体实例;...
分类:
编程语言 时间:
2014-06-24 18:39:17
阅读次数:
342