#使用多线程运行
from multiprocessing import Pool
from tqdm import tqdm
if __name__=='__main__':
start_num=0
numbers=2000
thread_count=10
p = Pool(thread_count)
for _ in tqdm(
p.imap_unordered(
QRDataGenerator.generate_from_tuple,
zip(
[i for i in range(start_num, numbers)],
[train_path] * (numbers-start_num),
[img_put_path] * (numbers-start_num),
[dot_path] * (numbers-start_num),
['dot'] * (numbers-start_num),
),
),
total=numbers-start_num,
):
pass
p.terminate()
书写自己需要运行的类和需要调用的方法:
class QRDataGenerator(object):
@classmethod
def generate_from_tuple(cls,t):
"""
Same as generate, but takes all parameters as one tuple
"""
cls.generate(*t)
@classmethod
def generate(cls,ind,train_path,img_put_path,dot_path,type_qr='dot'):
"""
"""
pass
进行的过程中可以明显感受到,比单独运行一个线程快很多: