由于python的gil,多线程不是cpu密集型最好的选择
多进程可以完全独立的进程环境中运行程序,可以充分的利用多处理器
但是进程本身的隔离带来的数据不共享也是一个问题,而且线程比进程轻量
importmultiprocessingimportdatetimedefcalc(i):
sum=0for _ in range(1000000000):
sum+=1
print(i,sum)if __name__ == '__main__':
start=datetime.datetime.now()
ps=[]for i in range(5):
p= multiprocessing.Process(target=calc,args=(i,))
ps.append(p)
p.start()for p inps:
p.join()
delta= (datetime.datetime.now()-start).total_seconds()print(delta)
注意多进程的代码一定要在__name__='__main__'下面执行
pid 进程id
exitcode 进程退出的状态码
terminate() 终止指定的进程
进程间同步:
multiprocessing还提供了共享内存,服务器进程来共享数据,还提供了queue队列,pipe管道用于进程间通信
通讯方式不同:
1多进程就是启动多个解释器进程,进程间通信必须序列化,反序列化
2.数据的线程安全性问题<