上代码
import threading
from time import sleep,ctime
loops = [4,2]
def loop(nloop,nsec):
print('start loop',nloop,'at:',ctime())
sleep(nsec)
print('loop',nloop,'done at:',ctime())
def main():
print('starting at:',ctime())
threads = []
nloops = list(range(len(loops)))
for i in nloops:
t = threading.Thread(target=loop,
args=(i,loops[i]))
threads.append(t)
for i in nloops: #开始多线程
threads[i].start()
for i in nloops: #等待所有线程完成
threads[i].join()
print('all done at:',ctime())
if __name__ == '__main__':
main()
运行结果为:
starting at: Mon Aug 20 09:46:14 2018
start loop 0 at: Mon Aug 20 09:46:14 2018
start loop 1 at: Mon Aug 20 09:46:14 2018
loop 1 done at: Mon Aug 20 09:46:16 2018
loop 0 done at: Mon Aug 20 09:46:18 2018
all done at: Mon Aug 20 09:46:18 2018
import threading
from time import sleep,ctime
loops = [4,2]
class ThreadFunc(object):
def __init__(self,func,args,name=''):
self.name = name
self.func = func
self.args = args
def __call__(self):
self.func(*self.args)
def loop(nloop,nsec):
print('start loop',nloop,'at:',ctime())
sleep(nsec)
print('loop',nloop,'done at:',ctime())
def main():
print('starting at:',ctime())
threads = []
nloops = list(range(len(loops)))
for i in nloops:
t = threading.Thread(
target=ThreadFunc(loop,(i,loops[i]),
loop.__name__))
threads.append(t)
for i in nloops: #开始多线程
threads[i].start()
for i in nloops: #等待所有线程完成
threads[i].join()
print('all done at:',ctime())
if __name__ == '__main__':
main()
运行结果为:
starting at: Mon Aug 20 09:43:49 2018
start loop 0 at: Mon Aug 20 09:43:49 2018
start loop 1 at: Mon Aug 20 09:43:49 2018
loop 1 done at: Mon Aug 20 09:43:51 2018
loop 0 done at: Mon Aug 20 09:43:53 2018
all done at: Mon Aug 20 09:43:53 2018
import threading
from time import sleep,ctime
loops = (4,2)
class MyThread(threading.Thread):
def __init__(self, func, args, name=''):
threading.Thread.__init__(self)
self.name = name
self.func = func
self.args = args
def run(self):
self.func(*self.args)
def loop(nloop,nsec):
print('start loop',nloop,'at:',ctime())
sleep(nsec)
print('loop',nloop,'done at:',ctime())
def main():
print('starting at:',ctime())
threads = []
nloops = list(range(len(loops)))
for i in nloops:
t = MyThread(loop,(i,loops[i]),loop.__name__)
threads.append(t)
for i in nloops: #开始多线程
threads[i].start()
for i in nloops: #等待所有线程完成
threads[i].join()
print('all done at:',ctime())
if __name__ == '__main__':
main()
运行结果为:
starting at: Mon Aug 20 09:52:43 2018
start loop 0 at: Mon Aug 20 09:52:43 2018
start loop 1 at: Mon Aug 20 09:52:43 2018
loop 1 done at: Mon Aug 20 09:52:45 2018
loop 0 done at: Mon Aug 20 09:52:47 2018
all done at: Mon Aug 20 09:52:47 2018