python多进程使用进度条
废话不多说,上代码:
import tqdm
import multiprocessing
class MultiProcessBar(object):
'''multiprocess with tqdm bar'''
def __init__(self, fun, *args):
self.func = fun
self.args = args[0]
self.pbar = tqdm.tqdm(total=len(*args))
return
def cbfun(self, arg):
self.pbar.update()
def __call__(self, n_workers=multiprocessing.cpu_count()):
pool = multiprocessing.Pool(processes = n_workers)
print(self.args)
for arge in self.args:
pool.apply_async(func = self.func, args= (arge,), callback=self.cbfun)
pool.close()
pool.join()
return
def fun(s):
'''测试用的函数'''
time.sleep(s)
print('sleep:',s)
if __name__ == '__main__':
a = [2,3,1,4,2,3,1,1.4,2.3,2.5]
MultiProcessBar(fun,a)(3)
注意:在win系统中一定要使用if name == ‘main’:,且目标函数要放在if name == ‘main’: 外。
本代码绝对原创,如果各位爷觉得有用,麻烦动一动您们发财的小手指给我点个赞吧!