最近上课时老师说,你们现在写的程序全是垃圾,你们现在必须建立起来一个多线程的概念,只有在多线程或者多进程下你们的程序才能看起来像样子.这两天偶然看到gevent可以来实现多线程,于是做一些小的练习!
首先下载gevent模块:
pip install cython git+git://github.com/surfly/gevent.git@1.0rc3#egg=gevent
To install latest development version:
pip install cython git+git://github.com/surfly/gevent.git#egg=gevent在终端中执行,sudo一下就好了;
做一个小的练习检测一下我的程序:
#-*-coding:utf-8-*-
import gevent
a=100
def foo():
print 'Running in foo'
gevent.sleep(0)
print 'Explicit context switch to foo again'
def bar():
print 'Explicit context to bar'
gevent.sleep(0)
print "我知道即使遇见你,我到了我的末日,我还是要准备好自己的最好的一面去迎接你!"
print 'Implicit context switch back to bar'
gevent.joinall([
gevent.spawn(foo),
gevent.spawn(bar),
])
运行结果如下:
Running in foo
Explicit context to bar
Explicit context switch to foo again
我知道即使遇见你,我到了我的末日,我还是要准备好自己的最好的一面去迎接你!
Implicit context switch back to bar
我们可以看到在gevent.sleep(0)这个地方发生了一些显著的变化,并不是和我们想的那样直接执行而是去sleep了一会才继续的!
在python中我们很容易观察出,他的顺序执行性,在某个地方错误了,就会在这里卡住,不再往下执行,我们在程序中经常使用try来解决一些问题,我们同样也可以在遇见try的时候加上gevent,这样就能避免影响全局的操作,
下来我们用时间来看看我们的程序是如何运行的:
#-*-coding:utf-8-*-
import time
import gevent
time=time.asctime()
def gr1():
print 'Start %s'%time
print "我相信我们那些一起走过的日子"
gevent.sleep(0)
print "End %s"%time
print "我也知道我们回不去了,你也知道!"
def gr2():
print "Strat %s"%time
print "即使她化在风尘中,我依旧爱着那段时光"
gevent.sleep(0)
print "End %s"%time
print "那就让我们用一些老去的时光祭奠那阳光的岁月!"
def gr3():
print "Strat %s"%time
print "凌乱的时光,凌乱的记忆,每次出现的都是不同的碎片!"
gevent.sleep(0)
print "End %s"%time
print "我们碎在记忆里!"
gevent.joinall([
gevent.spawn(gr1),
gevent.spawn(gr2),
gevent.spawn(gr3),
])
执行结果如下:
Start Sun Oct 6 10:08:47 2013
我相信我们那些一起走过的日子
Strat Sun Oct 6 10:08:47 2013
即使她化在风尘中,我依旧爱着那段时光
Strat Sun Oct 6 10:08:47 2013
凌乱的时光,凌乱的记忆,每次出现的都是不同的碎片!
End Sun Oct 6 10:08:47 2013
我也知道我们回不去了,你也知道!
End Sun Oct 6 10:08:47 2013
那就让我们用一些老去的时光祭奠那阳光的岁月!
End Sun Oct 6 10:08:47 2013
我们碎在记忆里!
看到时间是一样的,我感到奇怪,想了想才知道,我用的是初始化,在开始时进行初始化,
所以每次赋值都一样,我必须直接调用函数,
Start Sun Oct 6 10:21:08 2013
我相信我们那些一起走过的日子
Strat Sun Oct 6 10:21:08 2013
即使她化在风尘中,我依旧爱着那段时光
Strat Sun Oct 6 10:21:08 2013
凌乱的时光,凌乱的记忆,每次出现的都是不同的碎片!
End Sun Oct 6 10:21:18 2013
我也知道我们回不去了,你也知道!
End Sun Oct 6 10:21:18 2013
那就让我们用一些老去的时光祭奠那阳光的岁月!
End Sun Oct 6 10:21:18 2013
我们碎在记忆里!
我们在改一下sleep的时间,4,1,0,时间改成这个三个参数看看结果!
Start Sun Oct 6 10:26:03 2013
我相信我们那些一起走过的日子
Strat Sun Oct 6 10:26:03 2013
即使她化在风尘中,我依旧爱着那段时光
Strat Sun Oct 6 10:26:03 2013
凌乱的时光,凌乱的记忆,每次出现的都是不同的碎片!
End Sun Oct 6 10:26:03 2013
我们碎在记忆里!
End Sun Oct 6 10:26:04 2013
那就让我们用一些老去的时光祭奠那阳光的岁月!
End Sun Oct 6 10:26:07 2013
我也知道我们回不去了,你也知道!
看到不同了吧!