使用python模块threading来编写多线程程序的基本思想就是, 在threading.Thread类的基础上派生出一个子类,  将业务逻辑在该子类的run函数中实现, 创建该子类对象的线程池,并执行该子类对象的执行函数.

下面给出使用python中的threading模块进行多线程编程的一个示例, 在源码中,我们创建了4个线程的一个线程池和一个共享计数器, 然后让每个线程抢占执行时,将该计数器增1, 然后休眠. 这里相当于给出了一个二维空间, 线程数是一维, 每个线程执行的总次数是另一维, 从下面的运行结果可以很方便地看出: 线程轮询调度的情况.

注意这里对count的print输出需要包含在互斥锁内部,否则打印结果不对.

源码实现:

#!/usr/bin/env python
#encoding: utf-8import threading
import time#入参是线程调用次数
class Test(threading.Thread):def __init__(self, num):threading.Thread.__init__(self)self._run_num = numdef run(self):global count, mutexthreadname = threading.currentThread().getName()for x in xrange(0, int(self._run_num)):mutex.acquire()print threadname, x, countcount = count + 1mutex.release()time.sleep(1)if __name__ == '__main__':global count, mutexthreads = []num = 4count = 1# 创建锁mutex = threading.Lock()# 创建线程对象for x in xrange(0, num):threads.append(Test(10))# 启动线程for t in threads:t.start()# 等待子线程结束for t in threads:t.join()

运行效果图:

python threading模块多线程源码示例(一)相关推荐

  1. python threading模块多线程源码示例(二)

    一.思路概述 Python线程创建 使用threading模块的Thread类的接口如下 class Thread( group=None, target=None, name=None, args= ...

  2. Python中如何查看模块的源码内容

    ubuntu中查看python模块的源码 1. 打开ipython3,进入交互式解释器 2. 导入模块,以io模块为例,查看io.__file__属性,找到源码文件的路径 3. 使用cat命令查看源码 ...

  3. set在python中的用法_python中set的用法:详细源码示例

    这篇文章主要为大家详细介绍了python中set的用法:详细源码示例,具有一定的参考价值,可以用来参考一下. set函数基本用法感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. python ...

  4. python求素数积_用Python求素数的快速算法源码示例

    本篇文章为Python算法相关,用Python求素数的快速算法源码示例.算法在Python的学习中算是一个要点,能研究明白算法的同学都可以算的上是Python的大牛了. 首先简单的来说下什么是素数:质 ...

  5. Python threading Thread多线程的使用方法

    Python threading Thread多线程的使用方法 参考资料:<Python 多线程>http://www.runoob.com/python/python-multithre ...

  6. Python学习笔记- Python threading模块

    Python threading模块 直接调用 # !/usr/bin/env python # -*- coding:utf-8 -*- import threading import timede ...

  7. php并发取源码,PHP读取大文件源码示例-Swoole多进程读取大文件

    PHP读取大文件源码示例,通过PHP读取过大.超大型文件的思路及解决方案. 在日常读取文件时,若文件 不是很大,通常使用file_get_contents,将内容一次性载入的变量中,也可以远程加载网页 ...

  8. Linux Zero-copy零拷贝技术:源码示例

    <Linux Zero-copy零拷贝技术:源码示例> <Linux Zero-copy零拷贝技术全面揭秘> <什么是mmap?零拷贝?DMA?> <Linu ...

  9. Libcurl的编译_HTTP/HTTPS客户端源码示例

    HTTP/HTTPS客户端源码示例 环境:  zlib-1.2.8  openssl-1.0.1g  curl-7.36 Author:  Kagula LastUpdateDate: 2016-05 ...

最新文章

  1. wordpressPHP实现ajax评论,wordpress无刷新评论:无需插件ajax实现wordpress comment无刷新机制...
  2. Redis在windows下的安装
  3. python 下载阿里云mysql的备份文件及binlog到本地
  4. 百度 UNIT 技术负责人揭秘:如何让你的对话系统更智能
  5. [转] Windows Server 2012 Beta Cluster (Hyper-V 3.0)-SMB篇
  6. C#深入解析Json格式内容
  7. treeset java_Java TreeSet pollLast()方法与示例
  8. 【Processing学习】 - 公交车马路动态绘制
  9. bootstap-栅格系统
  10. Spark API 详解/大白话解释 之 map、mapPartitions、mapValues、mapWith、flatMap、flatMapWith、flatMapValues
  11. linux ksh教程下载,学习Linux中ksh的用法
  12. nodejs初步搭建HelloWord
  13. Android学习笔记(十一)——将Fragment添加到Activity中以及参数传递
  14. SimpleDateFormat 线程不安全及解决方案
  15. [WPF]Binding的Converter和Validator
  16. 【Java就业培训教程】——单态设计模式
  17. android 放大镜功能,简单实现Android放大镜效果
  18. 网络运维工程师面试题分享
  19. 阴阳师android转ios,阴阳师手游IOS自动刷御魂?IOS切换控制教程[多图]
  20. window 服务器443端口占用,443和80端口被占用win10如何解决_443和80端口被占用win10怎么处理...

热门文章

  1. 2022-2028年中国石油套管行业市场研究及前瞻分析报告
  2. CCF - 201409-3 - 字符串匹配
  3. 夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
  4. maven nexus 3 third party 构件上传
  5. access order by 判断是否除数为0
  6. OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法
  7. 一.Linq to JSON是用来干什么的?
  8. List和ObservableCollection的相互转化
  9. SSD(Single shot multibox detector)目标检测模型架构和设计细节分析
  10. usaco Hamming Codes