一:multiprocess基本使用
multiprocessing是要比fork更高级的库了,使用multiprocessing可以更加轻松的实现多进程程序。multiprocessing也提供了很多进程同步和进程通信的方法。
《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版]
《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码]
在Ubuntu下用Python搭建桌面算法交易研究环境
#!/usr/bin/env python
import multiprocessing
import time
def clock(interval):
while True:
print "The time is {0}".format(time.ctime())
time.sleep(interval)
if __name__ == "__main__":
for i in range(3):
p = multiprocessing.Process(target=clock,args=(1,))
p.start()
p.join()
join()代表启动多进程,但是阻塞并发运行,一个进程执行结束后再执行第二个进程。可以给其设置一个timeout值比如join(5)代表5秒后无论当前进程是否结果都继续并发执行第二个进程。
二:进程同步
对于一些互斥的资源来说,进程间需要进程互斥来访问。否则导致资源访问受阻,或者最后的结果混乱等情况。对于标准输出这个资源来说,如果多个资源同属输出信息,可能会导致输出的信息混乱。所以需要使用锁来避免资源互斥访问。
from multiprocessing import Process,Lock
def f(l,i):
l.acquire()
print "hello world",i
l.release()
if __name__ == "__main__":
lock = Lock()
for num in range(10):
Process(target=f,args=(lock,num)).start()