python threading模块多线程源码示例(一)
使用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模块多线程源码示例(一)相关推荐
- python threading模块多线程源码示例(二)
一.思路概述 Python线程创建 使用threading模块的Thread类的接口如下 class Thread( group=None, target=None, name=None, args= ...
- Python中如何查看模块的源码内容
ubuntu中查看python模块的源码 1. 打开ipython3,进入交互式解释器 2. 导入模块,以io模块为例,查看io.__file__属性,找到源码文件的路径 3. 使用cat命令查看源码 ...
- set在python中的用法_python中set的用法:详细源码示例
这篇文章主要为大家详细介绍了python中set的用法:详细源码示例,具有一定的参考价值,可以用来参考一下. set函数基本用法感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. python ...
- python求素数积_用Python求素数的快速算法源码示例
本篇文章为Python算法相关,用Python求素数的快速算法源码示例.算法在Python的学习中算是一个要点,能研究明白算法的同学都可以算的上是Python的大牛了. 首先简单的来说下什么是素数:质 ...
- Python threading Thread多线程的使用方法
Python threading Thread多线程的使用方法 参考资料:<Python 多线程>http://www.runoob.com/python/python-multithre ...
- Python学习笔记- Python threading模块
Python threading模块 直接调用 # !/usr/bin/env python # -*- coding:utf-8 -*- import threading import timede ...
- php并发取源码,PHP读取大文件源码示例-Swoole多进程读取大文件
PHP读取大文件源码示例,通过PHP读取过大.超大型文件的思路及解决方案. 在日常读取文件时,若文件 不是很大,通常使用file_get_contents,将内容一次性载入的变量中,也可以远程加载网页 ...
- Linux Zero-copy零拷贝技术:源码示例
<Linux Zero-copy零拷贝技术:源码示例> <Linux Zero-copy零拷贝技术全面揭秘> <什么是mmap?零拷贝?DMA?> <Linu ...
- Libcurl的编译_HTTP/HTTPS客户端源码示例
HTTP/HTTPS客户端源码示例 环境: zlib-1.2.8 openssl-1.0.1g curl-7.36 Author: Kagula LastUpdateDate: 2016-05 ...
最新文章
- wordpressPHP实现ajax评论,wordpress无刷新评论:无需插件ajax实现wordpress comment无刷新机制...
- Redis在windows下的安装
- python 下载阿里云mysql的备份文件及binlog到本地
- 百度 UNIT 技术负责人揭秘:如何让你的对话系统更智能
- [转] Windows Server 2012 Beta Cluster (Hyper-V 3.0)-SMB篇
- C#深入解析Json格式内容
- treeset java_Java TreeSet pollLast()方法与示例
- 【Processing学习】 - 公交车马路动态绘制
- bootstap-栅格系统
- Spark API 详解/大白话解释 之 map、mapPartitions、mapValues、mapWith、flatMap、flatMapWith、flatMapValues
- linux ksh教程下载,学习Linux中ksh的用法
- nodejs初步搭建HelloWord
- Android学习笔记(十一)——将Fragment添加到Activity中以及参数传递
- SimpleDateFormat 线程不安全及解决方案
- [WPF]Binding的Converter和Validator
- 【Java就业培训教程】——单态设计模式
- android 放大镜功能,简单实现Android放大镜效果
- 网络运维工程师面试题分享
- 阴阳师android转ios,阴阳师手游IOS自动刷御魂?IOS切换控制教程[多图]
- window 服务器443端口占用,443和80端口被占用win10如何解决_443和80端口被占用win10怎么处理...
热门文章
- 2022-2028年中国石油套管行业市场研究及前瞻分析报告
- CCF - 201409-3 - 字符串匹配
- 夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
- maven nexus 3 third party 构件上传
- access order by 判断是否除数为0
- OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法
- 一.Linq to JSON是用来干什么的?
- List和ObservableCollection的相互转化
- SSD(Single shot multibox detector)目标检测模型架构和设计细节分析
- usaco Hamming Codes