python multiprocessing 两种创建方式
作用:提供一个API来管理进程。
multiprocessing模块包含一个API,它基于threading API可以在多个进程间划分工作。有些情况下,multiprocessing可以作为临时替换,取代threading来利用多个CPU内核,避免Python全局解释锁带来的计算瓶颈。
类似python threading 两种创建方式,python multiprocess 也有两种创建方式:
1、调用函数
要创建第二个进程,最简单的方法就是用一个目标函数实例化一个Process对象,并调用start()让它开始工作。
1 import multiprocessing 2 3 def worker(num): 4 print 'Worker:', num 5 return 6 7 if __name__ == '__main__': 8 jobs = [] 9 for i in range(5): 10 p = multiprocessing.Process(target=worker, args=(i,)) 11 jobs.append(p) 12 p.start()
不同于threading,multiprocessing的目标函数可以是其他模块中定义的函数。
2、派生进程
要在一个单独的进程中开始工作,尽管最简单的方法是使用Process并传入一个目标函数,不过也可以使用一个定制子类。
1 import multiprocessing 2 3 class Worker(multiprocessing.Process): 4 5 def run(self): 6 print 'In %s' % self.name 7 return 8 9 if __name__ == '__main__': 10 jobs = [] 11 for i in range(5): 12 p = Worker() 13 jobs.append(p) 14 p.start() 15 for j in jobs: 16 j.join()
参考:
《Python 标准库》 10.4.9 派生进程(p435)