Category Archives: Python

关于gevent的微线程“eventlet”同步问题

理论上讲,Python是不存在线程安全问题的,由于GIT么,但是这是有前提的:sleep,I/O导致的wait都可能会引发线程安全隐患。

同理,gevent是基于事件驱动模型的,就不太可能是线程安全的。

gevent.coros.Semaphore提供了信号量的功能,可以是n个哦!

semaphore.acquire() -> 获取“锁”
semaphore.release() -> 释放“锁”

gevent的文档写的真简介啊,于是测试了个基本的同步方法:同[......]

继续阅读

Python中将list等分成N块

#arr是被分割的list,n是每个chunk中含n元素。
def chunks(arr, n):
return [arr[i:i+n] for i in range(0, len(arr), n)]

#或者让一共有m块,自动分(尽可能平均)
#split the arr into N chunks
def chunks(arr, m):
n = int(math.ceil(len(arr) / float(m)))
return [arr[i:i +[......]

继续阅读

Hadoop小集群(5结点)测试

1、Map/Reduce任务
输入:
文件格式
id value
其中id是1~100之间的随机整数,value为1~100之间的随机浮点数。
输出:
每个id的最大value

生成这类文件,可以用python搞定,见本文末尾的附录。

2、Map/Reduce程序
这里就直接使用新(0.20.2)的API了,即org.apache.hadoop.mapreduce.*下的接口。
特别注意:
job.setNumReduceTasks(5)
指定了本Job的Redu[......]

继续阅读