python多进程编程的一点积累

原创
2018/01/09 14:46
阅读数 195

在python中进行多进程编程,我们通常使用multiprocessing这个python官方的多进程库,但是据说有很多其他更好的库可使用,有许多新的特性例如守护进程等,不过今天我只讲比较简单原始的multiprocessing。

话不多说,直接上代码:

def calcuvalue_main(arg1,arg2,arg3):
	'''计算函数'''
	valuelist = []
	for word in arg1:
		#计算结果
		pass
	return valuelist

def pos_value_main(pos_words,neg_seedwords):
	'''多进程计算函数'''
	core_count = multiprocessing.cpu_count()
	pool = multiprocessing.Pool(core_count)

	result = []

	res = {}

	pos_words_list = cutlist(pos_words) #将待算的输入列表切分为多个小列表

	for index, pos_words in enumerate(pos_words_list):
		#将所有小列表分配到各个进程,返回的是一个个结果列表
		res[index] = pool.apply_async(calcuvalue_main, (pos_words, pos_seedwords, neg_seedwords))

	pool.close()
	pool.join()

	for i in res:
		#本条计算完毕
		real_res = res[i].get()
		for k in real_res:
			result.append(k)

	return result

首先确定你的程序是否适合多进程执行,如果适合,使用multiprocessing开启多个进程,将你的输入切分为多块,分块投入到各个进程中执行。

注意:切分块的大小要适当调整,如果太小,单个进程的计算强度不够,cpu在调度的时候,就不会打满,会出现多个进程争夺时间片的情况,调整适当能够充分利用cpu。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部