python多线程

本文详细介绍使用Ganomaly模型进行图像异常检测的过程,包括模型训练、多线程调用及性能测试。通过实例演示如何在不同数据集上运行Ganomaly,并利用多线程加速训练流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

"""
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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值