您的位置:首页 > 编程语言 > Python开发

python多进程编程的一点积累

2018-01-09 00:00 274 查看
摘要: 因为GIL的关系,python运行都是单线程状态,多线程也不过是大家轮流运行罢了,这种运行方式是比较慢的,在进行一些大规模计算的时候,我们需要多进程编程来减少运行时间。

在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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python 多进程编程