在网上看到python多线程
今天尝试一下,先贴源码
import cv2
from time import ctime
def music(func):
for i in range(100):
img = cv2.imread(fn, 2)
# print "I was at the %s! %s" %(func,ctime())
def move(func):
for i in range(100):
img2 = cv2.imread(fn2, 2)
# print "I was at the %s! %s" %(func,ctime())
threads = []
t1 = threading.Thread(target=music,args=(u'imread1',))
threads.append(t1)
t2 = threading.Thread(target=move,args=(u'forshow1',))
threads.append(t2)
if __name__ == '__main__':
try: fn = sys.argv[1]
except:fn = 'E:\\5.bmp'
fn2 ='E:\\6.bmp'
print "1 was start at the %s" %(ctime())
for t in threads:
t.setDaemon(True)
t.start()
t.join()
print "1 was end at the %s" %(ctime())
print "2 was start at the %s" %(ctime())
music(u'imread2')
move(u'imread2')
print "2 was end at the %s" %(ctime())
print "all over %s" %ctime()
最后结果如下图,可以发现多线程效率提高还是有的,真是线程本身的开销也较大,多开一个线程其效率提高在30%左右。并不像网上所说的是鸡肋,原因还在探究,但是windows对线程有自动优化,现在还不清楚,有待继续深入