并發
建立少量程序
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接口等。