天天看點

python教程——python并發示例

并發

建立少量程序

import multiprocessing

import time

def func(msg):

for i in xrange(3):

print msg

time.sleep(1)

if __name__ == "__main__":

p = multiprocessing.process(target=func,args=("hello",))

p.start()

p.join()

print "sub-process done."

程序池

使用apply_async,沒有async就是阻塞版本了

pool = multiprocessing.pool(processes=4)

for i in xrange(10):

msg = "hello %d" %(i)

pool.apply_async(func,(msg,))

pool.close()

pool.join()

print "sub-process(es) done."

使用pool,并關注結果

return "done" + msg

result = []

result.append(pool.apply_async(func,(msg,)))

for res in result:

print res.get()

小結

python下比較好的并行方式是使用多程序,可以非常有效的使用cpu資源,實作真正意義上的并發。

線程共享相同的位址空間和記憶體,線程之間通信是非常容易的,但是程序之間通信要複雜一些。程序間通信有管道,消息隊列,socket接口等。