Python多线程编程之多线程加锁操作示例
2018-09-06 11:05
856 查看
本文实例讲述了Python多线程编程之多线程加锁操作。分享给大家供大家参考,具体如下:
Python语言本身是支持多线程的,不像PHP语言。
下面的例子是多个线程做同一批任务,任务总是有task_num个,每次线程做一个任务(print),做完后继续取任务,直到所有任务完成为止。
# -*- coding:utf-8 -*- #! python2 import threading start_task = 0 task_num = 10000 mu = threading.Lock() ###通过工厂方法获取一个新的锁对象 class MyThread(threading.Thread): ###类MyThread继承基类threading.Thread def run(self): ##线程启动的入口函数,子类需重写 global start_task global mu global start_task while start_task < task_num: ##如果任务没有完成,则继续 if mu.acquire(): ##加锁 if start_task < task_num: print start_task start_task = start_task + 1 mu.release() ##释放锁 def test(): thread_all = [] for i in range(6): ##for循环创建6个线程 t = MyThread() ##创建线程 thread_all.append(t) t.start() ###启动线程 for i in range(6): thread_all[i].join() ##等待线程结束 if __name__ == "__main__": test()
运行上述代码,则输出1~9999
测试加锁与不加锁效果:将任务数设置为1千万或者以上,在多核机器上将print输出分别保存,就能说明问题。
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python+MySQL数据库程序设计入门教程》及《Python常见数据库操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- 简单示例python操作memcache
- Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
- Python使用Flask-SQLAlchemy连接数据库操作示例
- python xml解析之ElementTree 基本读操作示例
- Python常见文件操作的函数示例
- python操作数据库之sqlite3打开数据库、删除、修改示例
- Python中shutil模块的常用文件操作函数用法示例
- Python常见文件操作的函数示例
- Python中shutil模块的常用文件操作函数用法示例
- Python操作MySQL数据库示例
- python连接mongodb操作数据示例(mongodb数据库配置类)
- Python基于FTP模块实现ftp文件上传操作示例
- Python使用pickle模块储存对象操作示例
- Python(2.7.x)文件操作的简单示例
- Python基于dom操作xml数据的方法示例
- Python引用计数操作示例
- Python常见文件操作的函数示例
- Python操作mongodb数据库进行模糊查询操作示例
- python xml解析之ElementTree 基本读操作示例
- Python常见文件操作的函数示例