python进行并行计算
有的时候在我们在用python进行跑单个程序的时候耗费时间比较多,占用的资源又比较少,而且可能需要多次测试调参,这个时候如果可以一次跑多个程序的话就会很方便了。本期分享一下python如何利用多进程来并行跑程序:
首先需要python的multiprocessing
库,没有的话自行下载;不会下载的可以留言或发邮件给我,文末有邮件地址。
然后我们通过pool = multiprocessing.Pool(2)
来设定多进程,其中2
表示用两个进程;
要创建多进程的话得调用apply_async()
函数,添加完函数后加上pool.close() pool.join()
来结尾就可创建多进程了。
多进程代码的例子如下:
import multiprocessing,time
def function(string,seconds):
time.sleep(seconds) # 睡眠seconds秒
print(string)
return seconds
def note_return(value):
note.append(value)
if __name__ == '__main__':
cores = multiprocessing.cpu_count() # 该语句用于查看电脑有多少个核
print("cores =",cores)
note= [] # 用于记录多进程的返回值
pool = multiprocessing.Pool( 2 ) # 创建2个并行程序
### apply_async()函数调用有两种方式,第一种是直接挨个写,第二种是指定参数的方式
pool.apply_async(function,args=( "function A",8,),callback=note_return) # 第一种调用方法,指定参数**==**
pool.apply_async(function,("function B",3,),callback=note_return) # 第二种调用方法,挨个写,由于第三个参数是别的,所以用了指定的方式:callback=
pool.close()
pool.join()
print(note)
以上代码例子在函数apply_async()
中使用了callback=
参数,用于记录并行程序的返回值,若调用函数无返回值,则可不写。
结果
结果在第3秒的时候输出了“function B”,第8秒的时候输出了“function A”,可以看到是并行了,并且成功记录的并行程序的返回值。
好了,本次的python多进程并行计算的分享就到这里了,才疏学浅,难免有错误和不当之处,欢迎交流批评指正!
同时有问题的话欢迎留言或邮箱联系(ljt_IT@163.com)。