"""
TRAIN GANOMALY
. Example: Run the following command from the terminal.
run train.py \
--model ganomaly \
--dataset UCSD_Anomaly_Dataset/UCSDped1 \
--batchsize 32 \
--isize 256 \
--nz 512 \
--ngf 64 \
--ndf 64
"""
##
# LIBRARIES
from __future__ import print_function
from options import Options
from lib.data import load_new_data
from lib.model import Ganomaly
import _thread
import threading
opt = Options().parse()
# dataloader=load_data(opt)
imgpath_1="./data/1"
data_1=load_new_data(opt,imgpath_1)
imgpath_2="./data/2"
data_2=load_new_data(opt,imgpath_2)
# dataloader1=load_data_detect(opt1)
def traverse_trainset1(opt1,dataloader):
opt1.id=1
opt.outrf='./output1'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset2(opt1,dataloader):
opt1.id=2
opt.outrf='./output2'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset3(opt1,dataloader):
opt1.id=3
opt.outrf='./output3'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset4(opt1,dataloader):
opt1.id=4
opt.outrf='./output4'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset5(opt1,dataloader):
opt1.id=5
opt.outrf='./output5'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset6(opt1,dataloader):
opt1.id=6
opt.outrf='./output6'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset7(opt1,dataloader):
opt1.id=7
opt.outrf='./output7'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset8(opt1,dataloader):
opt1.id=8
opt.outrf='./output8'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset9(opt1,dataloader):
opt1.id=9
opt.outrf='./output9'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset10(opt1,dataloader):
opt1.id=10
opt.outrf='./output10'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
def traverse_trainset11(opt1,dataloader):
opt1.id=11
opt.outrf='./output10'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
thread_special1 = threading.Thread(target=traverse_trainset1, args=(opt, data_2))
thread_special1.start()
thread_special2=threading.Thread(target=traverse_trainset2,args=(opt,data_2))
thread_special2.start()
thread_special3 = threading.Thread(target=traverse_trainset3, args=(opt, data_2))
thread_special3.start()
thread_special4=threading.Thread(target=traverse_trainset4,args=(opt,data_2))
thread_special4.start()
thread_special5 = threading.Thread(target=traverse_trainset5, args=(opt, data_2))
thread_special5.start()
thread_special6=threading.Thread(target=traverse_trainset6,args=(opt,data_2))
thread_special6.start()
thread_special7=threading.Thread(target=traverse_trainset7,args=(opt,data_2))
thread_special7.start()
thread_special8 = threading.Thread(target=traverse_trainset8, args=(opt, data_2))
thread_special8.start()
thread_special9=threading.Thread(target=traverse_trainset9,args=(opt,data_2))
thread_special9.start()
thread_special10 = threading.Thread(target=traverse_trainset10, args=(opt, data_2))
thread_special10.start()
thread_special11=threading.Thread(target=traverse_trainset11,args=(opt,data_2))
thread_special11.start()
opt.id=0
model = Ganomaly(opt, data_1)
performance = model.test()
# DETECT
#print('performance = ', performance)
虽然python有线程锁 但是我老大就是要我试试
所以我试了
如上所示
所需要的库
import _thread
import threading
所需要调用的进程是
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
让这个函数被多线程调用
首先将需要被调用的函数写成函数
def traverse_trainset1(opt1,dataloader):
opt1.id=1
opt.outrf='./output1'
model1=Ganomaly(opt1,dataloader)
performance = model1.test()
然后通过threading.Thread调用 这个函数有2个输入 target值指向函数traverse_trainset1(函数名而不是traverse_trainset1())
第二个值指向该函数的输入opt,data_2 然后启动就是多线程调用 记得结束程序是ctrl+c 而不能用ctrl+z
thread_special1=threading.Thread(target=traverse_trainset1,args=(opt,data_2))
thread_special1.start()