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
  • asp之家 网络编程 m.aspxhome.com