Python入门之初涉线程
由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程。
多任务可以由多进程完成,也可以由一个进程内的多线程完成。
Thread 是threading模块中最重要的类之一,可以使用它来创建线程。有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法;另一种是创建一个threading.Thread对象,在它的初始化函数(__init__)中将可调用对象作为参数传入。
看到一篇比较好的介绍线程的文章:http://python.jobbole.com/81546/
下面是一个拷贝过来的代码,比较有意思,multi_main()函数中的print去掉之后代码效率会降低很明显。添加一个print或者换成time.sleep(0.1),多线程的效率会迅速追上单线程,然而,是不是就仅仅止步于此了呢?不妨思考一下,那么python中的多线程又有何意义?
from threading import Thread import time #python在多线程的情况下居然比单线程整整慢了26% def counter(): i = 0 for j in range(50000000): i += 1 return True def main(): start_time = time.time() for tid in range(2): t = Thread(target=counter) t.start() t.join() end_time = time.time() print ("total time of single is: {}".format(end_time - start_time)) def multi_main(): thread_all = [] start_time = time.time() for tid in range(2): t = Thread(target=counter) t.start() thread_all.append(t) #print('0')#去掉这行代码,代码效率将降低,也可以在此sleep 0.1s for i in range(2): thread_all[i].join() end_time = time.time() print ("total time of multi is: {}".format(end_time -start_time)) if __name__ == '__main__': main() multi_main()
相关推荐
夜斗不是神 2020-11-17
huavhuahua 2020-11-20
Yasin 2020-11-16
xiaoseyihe 2020-11-16
千锋 2020-11-15
diyanpython 2020-11-12
chunjiekid 2020-11-10
wordmhg 2020-11-06
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16