#导入线程包
from multiprocessing.dummy import Pool as ThreadPool
##############################
#定义需要放到线程中去执行的函数,这个函数又输入参数,有返回值
#1,带一个参数: Parameter_List ,
#2,该线程函数返回“一对儿”数据,分别是图片与标注
###############################
def load_seq_crop_data_masktumor_try(Parameter_List): #在线程里面执行的函数,用于数据增广
。。。
return cropp_img, cropp_tumor #线程函数的返回值
##############################
#构造线程环境
#Pool 构造线程对象 : pool=Pool(threads_num)
#用线程对象调用fun函数,携带参数params ,并返回结果results:
# result_list = pool.map(fun,patrams)
# 禁止添加新的线程 :pool.close()
# 主进程阻塞等待子进程执行结束、返回结果并退出 pool.join()
# 处理线程执行结果:
# for idx in range(len(result_list)):
# a = result_list[idx]
# ….
##############################
#生成器调用结构:
# while 1:
# 。。。。
# 用线程处理数据
# X = 。。。
# Y = 。。。
# 。。。。
# yield (X,Y) #生成器 与while 1配合
################################
#在keras的fit函数中使用多线程:keras内部同样使用线程或者进程将生成器的数据送入训练引擎
#generate_arrays_from_file()是一个生成器函数,在这个函数中使用多线程机制处理数据增广等操作
# max_queue_size=2, workers=2是keras的fit函数自带的队列---线程机制,用于将生成器的数据宋儒道##网络训练函数,网络训练函数从队列中获取数据。
model.fit_generator(
generate_arrays_from_file(args.b, trainidx, img_list, tumor_list, tumorlines, liverlines,
tumoridx, liveridx, minindex_list, maxindex_list),
steps_per_epoch=steps, epochs= 6000, verbose = 1,
callbacks = [model_checkpoint],
max_queue_size=2, workers=2, use_multiprocessing=True
)