python多进程demo

xiaoxiao2021-02-28  70

任务需求,在声纹识别任务中,模型库可能比较大,如果单线程的话,每个测试句都跟几百个模型计算得分,那么测试过程太慢了。这里采用 多进程 和 多线程(暂时空白) 的方式进行处理。

多进程版本(省略了内部函数实现)

print("Test Stage") print("test length ", len(testList)) #这个test的数据太多了,并且每一个要跟500个model进行计算,所以必须采用多进程的方法 def compute_likelihood_scores_single(testlist): result_lines = [] for i in range(len(testlist)): result_line = 'your result' result_lines.append(result_line) print("Cur: ", result_line) return result_lines pool = Pool(nj) one_list_length = int(len(testList) / nj) all_test = [] start = 0 for i in range(nj-1): start = one_list_length * i print(start, start + one_list_length) all_test.append(testList[start: start + one_list_length]) all_test.append(testList[start+one_list_length:]) print([len(list) for list in all_test]) all_results_lines = pool.map(compute_likelihood_scores_single, all_test) all_results_lines = sum(all_results_lines, []) pool.close() pool.join() all_num = len(all_results_lines)

如果你用的是python2.7, 并且遇到了这个错误:

cPickle.PicklingError: Can't pickle <type 'module'>: attribute lookup __builtin__.module failed

有很多解决方法,但是基本都看不太明白,也不是很好解决。 不过最好的方法就是抓紧换python3.5跑,因为python3.3解决了这个问题。

转载请注明原文地址: https://www.6miu.com/read-27630.html

最新回复(0)