Python多进程并发(multiprocessing)

由于Python设计的限制(我说的是咱们常用的CPython)。最多只能用满1个CPU核心。

Python提供了非常好用的多进程包multiprocessing,你只需要定义一个函数,Python会替你完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。

1、新建单一进程

如果我们新建少量进程,可以如下:
import multiprocessing
import time

def func(msg):
for i in xrange(3):[......]

继续阅读

数据结构重读 – 图的定义和术语

1、在图结构中,结点关系是任意的:任意两个数据元素(结点)之间都可能有关系。

2、有向图可以表示为G={V, A},V是顶点集合,A是关系(边)的集合,也可称作VR。关系(边)用有序对<v, w>表示。图形表示是一条有向弧。v是初始点(弧尾),w是终端点(狐头)。

3、无向图一般表示为G={V, E},V还是顶点集合,E是边集合。边用无序对(v, w)表示。图形表示是一条边(无向)。

有向图G1:

V1 = {v1, v2, v3, v4}

A1 = {[......]

继续阅读

python使用SSHClient(Paramiko)实现后台运行进程

继上周发现了SSHClient这个Python包,使用了几天后,现在吐糟无力。

1、不支持循环拷贝,即scp -r这种。这个也忍了吧。

2、ssh执行command后,一旦断开连接,进程马上退出……由于我的shell脚本可能要运行好几个小时,一旦网络不稳定就悲剧了。

经过多方查证,终于解决了第二个问题,其实还是用shell解决的。
nohup your_shell.sh > /dev/null 2>&1 &[......]

继续阅读

求最长的数字字符串

写一个函数,它的原形是:

int continumax(char *outputstr,char *intputstr)

功能:

在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。

例如:
"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789。

注意很多答案是错的,未考虑末尾不是字母的情况!
int[......]

继续阅读

MongoDB配置Sharding (负载均衡)

Mongod DB中有Sharding(分片)和Replication(副本)两个功能。

前者主要是将数据水平分割到各个结点上,达到负载均衡的目的。

后者用于故障恢复。即一般一个Sharding有若干个Replication。

本文只讨论Sharding的情况,因为我们的环境机器本来就不够,不会拿来做Replication的。

配置Sharding有如下三个要素

1、1~1000个Sharding。

2、1~3个mongo config服务器。

3、1[......]

继续阅读