这篇文章给大家介绍gil在密集型多线程和单线程执行效率对比是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
import logging import datetime FORMAT = '%(threadName)s %(thread)d %(message)s' logging.basicConfig(format=FORMAT, level=logging.INFO) start = datetime.datetime.now() def calc(): sum = 0 for _ in range(100000000): sum += 1 calc() calc() calc() calc() calc() delta = (datetime.datetime.now() - start).total_seconds() logging.info(delta)
import threading import logging import datetime FORMAT = '%(threadName)s %(thread)d %(message)s' logging.basicConfig(format=FORMAT, level=logging.INFO) start = datetime.datetime.now() def calc(): sum = 0 for _ in range(100000000000): sum += 1 lst = [] for i in range(5): t = threading.Thread(target=calc, ) lst.append(t) t.start() for i in lst: i.join() delta = (datetime.datetime.now() - start).total_seconds() logging.info(delta)
两个测试结果来看,在CPython中,对于CPU密集型而言,多线程没特别大的优势,和一个线程的执行时间相差不是特别大
关于gil在密集型多线程和单线程执行效率对比是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。