博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中多线程与非线程的执行性能对比
阅读量:5897 次
发布时间:2019-06-19

本文共 1627 字,大约阅读时间需要 5 分钟。

此对比说明了一件事:

如果是IO型应用,多线程有优势,

如果是CPU计算型应用,多线程没必要,还有实现锁呢。

#!/usr/bin/env python# -*- coding: utf-8 -*-from threading import Threadclass threads_object(Thread):    def run(self):        function_to_run()class nothreads_object(object):    def run(self):        function_to_run()def non_threaded(num_iter):    funcs = []    for i in range(int(num_iter)):        funcs.append(nothreads_object())    for i in funcs:        i.run()def threaded(num_threads):    funcs = []    for i in range(int(num_threads)):        funcs.append(threads_object())    for i in funcs:        i.start()    for i in funcs:        i.join()def function_to_run():    a, b = 0, 1    for i in range(10000):        a, b = b, a + b    '''    import requests    for i in range(10):        requests.get("http://10.25.174.41/")    '''def show_results(func_name, results):    print("%-23s %4.6f seconds" % (func_name, results))if __name__ == "__main__":    import sys    from timeit import Timer    repeat = 100    number = 1    number_threads = [1, 2, 4, 8]    print('Starting tests')    for i in number_threads:        t = Timer("non_threaded(%s)" \                  % i, "from __main__ import non_threaded")        best_result =\                    min(t.repeat(repeat=repeat, number=number))        show_results("non_threaded (%s iters) "\                     %i, best_result)        t = Timer("threaded(%s)" \                  % i, "from __main__ import threaded")        best_result =\                    min(t.repeat(repeat=repeat, number=number))        show_results("threaded (%s iters) "\                     %i, best_result)    print ('Iterations complete')

转载地址:http://buosx.baihongyu.com/

你可能感兴趣的文章
【11】ajax请求后台接口数据与返回值处理js写法
查看>>
Python菜鸟之路:Jquery Ajax的使用
查看>>
LeetCode算法题-Maximum Depth of Binary Tree
查看>>
sha1withRSA算法
查看>>
让简历一发即中三大绝招
查看>>
Vim和操作系统剪贴板交互
查看>>
使用ExposedObject对Asp.net MVC中匿名类型的JsonResult做单元测试
查看>>
ajax省市县联动
查看>>
Cox 教学视频5
查看>>
014-请问你觉得测试项目具体工作是什么?
查看>>
JVM类加载(4)—加载器
查看>>
public/private/protected的具体区别
查看>>
面试宝典——求一个字符串中连续出现次数最多的子串
查看>>
VMware Workstation虚拟机上网设置
查看>>
Jenkins持续集成学习-搭建jenkins问题汇总
查看>>
leetcode:Invert Binary Tree
查看>>
C#Note13:如何在C#中调用python
查看>>
Android介绍以及源码编译---Android源码下载
查看>>
SpringBoot集成redis缓存
查看>>
万恶的浏览器兼容问题
查看>>