python 的多线程有点鸡肋,适用场景有局限,单位时间多个核只能跑一个线程。

  1. 有泳池一个,四个泵,但只有一个人,一人只能开启管理着其中一个,所以四个泵没什么用。但是,如果泵的工作时间与冷却恢复时间是13(感谢inoahx指出,已改),那么配置的利用率高达100%。

直接运行代码

single.py
  1. #!/usr/bin/python3
  2. #-*- coding: utf-8 -*-
  3. # author:zhouchao
  4. # 功能:直接运行程序 计算时间
  5.  
  6. import threading
  7. import sys
  8. import math
  9. import time
  10.  
  11. lists = [];
  12. for x in range(1,10000000):
  13. lists.append(x);
  14.  
  15. length = len(lists);
  16. for x in range(600):
  17. step = math.ceil(float(length)/600)
  18. minIndex = step * x
  19. if minIndex + step > length :
  20. maxIndex = length
  21. else:
  22. maxIndex = minIndex+step
  23.  
  24. print(lists[minIndex:maxIndex])
  25. datetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
  26. fileObject = open("time1.txt",'a+');
  27. fileObject.write(str(datetime)+"\n");
  28. fileObject.close();

所需时间:134 s

开600 个线程运行同一代码

multiThread.py

  1. #!/usr/bin/python3
  2. #-*- coding: utf-8 -*-
  3. # author:zhouchao
  4. # 功能:600线程计算执行时间
  5.  
  6. import threading
  7. import sys
  8. import math
  9. import time
  10.  
  11. lists = [];
  12. for x in range(1,10000000):
  13. lists.append(x);
  14.  
  15. def function(i):
  16. global lists
  17. length = len(lists);
  18. step = math.ceil(float(length)/600)
  19. minIndex = step * i
  20. if minIndex + step > length :
  21. maxIndex = length
  22. else:
  23. maxIndex = minIndex+step
  24.  
  25. print(lists[minIndex:maxIndex])
  26. datetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
  27. # datetime = str(lists[minIndex:maxIndex])
  28. fileObject = open("time2.txt",'a+');
  29. fileObject.write(str(datetime)+"\n");
  30. fileObject.close();
  31.  
  32. threads = []
  33. for i in range(600):
  34. t = threading.Thread(target=function , args=(i,))
  35. threads.append(t)
  36. t.start()
  37. t.join()

所需时间:160 s

python 的多线程执行速度的更多相关文章

  1. 采用Psyco实现python执行速度提高到与编译语言一样的水平

    本文实例讲述了采用Psyco实现python执行速度提高到与编译语言一样的水平的方法,分享给大家供大家参考.具体实现方法如下: 一.安装Psyco很简单,它有两种安装方式,一种是源码方式,一种是二进制 ...

  2. 单线程和多线程执行对比—Python多线程编程

    单线程和多线程执行对比 本章使用递归求斐波那契.阶乘与累加函数的执行来对比单线程与多线程: 斐波那契.阶乘与累加(mtfacfib.py): ​ import threading from time ...

  3. Python实现多线程调用GDAL执行正射校正

    python实现多线程参考http://www.runoob.com/python/python-multithreading.html #!/usr/bin/env python # coding: ...

  4. selenium+python自动化90-unittest多线程执行用例

    前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...

  5. Python的多线程GIL浅谈

    来源知乎:https://www.zhihu.com/question/23474039/answer/269526476 在介绍Python中的线程之前,先明确一个问题,Python中的多线程是假的 ...

  6. 【Python】 多线程并发threading & 任务队列Queue

    threading python程序默认是单线程的,也就是说在前一句语句执行完之前后面的语句不能继续执行(不知道我理解得对不对) 先感受一下线程,一般情况下: def testa(): sleep(1 ...

  7. Python的多线程和多进程

    (1)多线程的产生并不是因为发明了多核CPU甚至现在有多个CPU+多核的硬件,也不是因为多线程CPU运行效率比单线程高.单从CPU的运行效率上考虑,单任务进程及单线程效率是最高的,因为CPU没有任何进 ...

  8. python中多线程,多进程,多协程概念及编程上的应用

    1, 多线程 线程是进程的一个实体,是CPU进行调度的最小单位,他是比进程更小能独立运行的基本单位. 线程基本不拥有系统资源,只占用一点运行中的资源(如程序计数器,一组寄存器和栈),但是它可以与同属于 ...

  9. Python编程-多线程

    一.python并发编程之多线程 1.threading模块 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 1.1 开启线程的 ...

随机推荐

  1. 使用MegaCli查看raid信息

    LSI SAS based MegaRAID driver http://www.lsi.com/downloads/Public/Nytro/downloads/Nytro%20XD/MegaCli ...

  2. Linux上Libevent的安装

    1.下载wget -O libevent-2.0.21-stable.tar.gz https://github.com/downloads/libevent/libevent/libevent-2. ...

  3. Sublime Text2-Control Package---ShinePans

    1.打开sublime Text2 2.菜单条中的preference>>BrowsePackages 3.退到上一级打开Installed Packages 4.拷贝文件到此目录 (Pa ...

  4. java的nio包的SelectionKey,Selector,SelectableChannel三者的缠绵关系概述

    猛击这里 java的nio包的SelectionKey,Selector,SelectableChannel三者的缠绵关系概述

  5. python day - 19 抽象类 接口类 多态 封装

    一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...

  6. sanic官方文档解析之Example(一)

    1,示例 这部的文档是简单的示例集合,它能够帮助你快速的启动应用大部分的应用,这些应用大多事分类的,并且提供给ini工作的连接代码: 1.1,基础示例 这部分示例集成了提供简单sanic简单的代码 单 ...

  7. Codeforces Round #422 (Div. 2) A. I'm bored with life 暴力

    A. I'm bored with life     Holidays have finished. Thanks to the help of the hacker Leha, Noora mana ...

  8. querying rpm database

    Call dbMatch on a transaction set to create a match iterator. As with the C API, a match iterator al ...

  9. SEO搜索引擎基础原理

  10. Continuous integration: The answer to life, the universe, and everything?

    Continuous integration is not always the right answer. Here's why. https://techbeacon.com/continuous ...