zoukankan      html  css  js  c++  java
  • 【Python】多线程2

    threading模块

    import time
    import random
    import threading
    class Inclass:
        def __init__(self):
            print 'Inclass 初始化'
        def execIn(self,i):
            rand = int(random.random() * 10)
            print i,'---%s--开始执行,暂停%d秒' % (time.ctime(),rand)
            time.sleep(rand)
            
    class Outclass:
        def __init__(self):
            print 'OutClass初始化'
        def execOut(self):
            InC = Inclass()
            length = 1000
            nloops = range(length)
            threads = []
            for i in range(length):
                t = threading.Thread(target = InC.execIn, args = (i,))
                threads.append(t)
            for i in nloops:
                threads[i].start()
            for i in nloops:
                threads[i].join()
                
    OC = Outclass()
    OC.execOut()
                
            

    版本2:

    import time
    import random
    import threading
    class Inclass:
        def __init__(self):
            print 'Inclass 初始化'
        def execIn(self,i):
            rand = int(random.random() * 10)
            print i,'---%s--开始执行,暂停%d秒' % (time.ctime(),rand)
            time.sleep(rand)
            return i
            
            
            
    class MyThread(threading.Thread):
        def __init__(self,func,args,name = ''):
            threading.Thread.__init__(self)
            self.name = name
            self.func = func
            self.args = args
        def getResult(self):
            return self.res
        def run(self):
            self.res = self.func(*self.args)
    
    
            
            
    class Outclass:
        def __init__(self):
            print 'OutClass初始化'
        def execOut(self):
            InC = Inclass()
            length = 1000
            threadlen = 10
            k = 0
            i = 0
            while i < length:
                nloops = range(threadlen)
                threads = []
                for j in range(threadlen):
                    t = MyThread( InC.execIn, (i,))
                    i += 1
                    threads.append(t)
                for i in nloops:
                    threads[i].start()
                for i in nloops:
                    threads[i].join()
                    
                for i in nloops:
                    print '-----result:',threads[i].getResult()
                    
                print k,'---%s--开始执行多线程第%d个小循环' % (time.ctime(),k)
                k += 1
                
    OC = Outclass()
    OC.execOut()
  • 相关阅读:
    C# FileStream 文件复制
    DataSnap Server 客户端调用 异常
    抛出异常 exception
    RAD Tokyo 10.2.2
    delphi ios info.plist
    sql 日期格式
    sql server 2014登录账号
    sql server导入excel数据
    dev16 cxgrid 在DLL里报0地址错
    sql server 查看所有表记录数
  • 原文地址:https://www.cnblogs.com/colipso/p/4514082.html
Copyright © 2011-2022 走看看