Python多线程编程之多线程加锁操作示例
作者:旭东的博客 时间:2023-11-01 00:37:19
本文实例讲述了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程序设计有所帮助。
来源:https://www.cnblogs.com/xudong-bupt/p/4830895.html
标签:Python,多线程,加锁
0
投稿
猜你喜欢
MySql存储过程循环的使用分析详解
2024-01-19 05:13:48
Python-Selenium自动化爬虫
2021-04-04 10:55:39
Golang控制通道实现协程等待详解
2023-07-21 16:23:39
python爬取之json、pickle与shelve库的深入讲解
2023-11-05 00:58:35
python pandas模块基础学习详解
2022-11-06 22:45:58
Mysql的慢SQL优化思路和规范详解
2024-01-22 22:01:15
Python使用logging模块实现打印log到指定文件的方法
2023-12-14 03:59:29
go doudou应用中使用注解示例详解
2024-02-23 08:35:07
PyTorch实现多维度特征输入逻辑回归
2022-08-08 02:56:41
sqlserver 导出插入脚本代码
2012-01-29 18:04:43
十条建议帮你提高Python编程效率
2021-07-18 02:55:54
如何保持Oracle数据库的优良性能
2024-01-14 18:05:32
css可以给img元素设置背景图
2008-09-29 15:35:00
mysql 8.0.22 zip压缩包版(免安装)下载、安装配置步骤详解
2024-01-15 21:19:16
python实现udp传输图片功能
2022-09-24 16:35:01
MySQL 5.7及8.0版本数据库的root密码遗忘的解决方法
2024-01-19 01:40:37
详解python字符串驻留技术
2023-09-25 21:49:25
PHP封装CURL扩展类实例
2023-07-17 15:19:50
Oracle 管道 解决Exp/Imp大量数据处理问题
2024-01-21 22:15:16
Pytorch通过保存为ONNX模型转TensorRT5的实现
2023-10-22 13:45:27