Python多线程编程之多线程加锁操作示例

 更新时间:2018年09月06日 11:05:02   作者:旭东的博客  
这篇文章主要介绍了Python多线程编程之多线程加锁操作,涉及Python线程创建、加锁、释放锁等相关操作技巧,需要的朋友可以参考下

本文实例讲述了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中unittest模块做UT(单元测试)使用实例

    Python中unittest模块做UT(单元测试)使用实例

    这篇文章主要介绍了Python中unittest模块做UT(单元测试)使用实例,本文直接给出待测试的类、测试类和测试结果以及测试总结,需要的朋友可以参考下
    2015-06-06
  • 如何使用Python在2秒内评估国际象棋位置详解

    如何使用Python在2秒内评估国际象棋位置详解

    关心编程语言的使用趋势的人都知道,最近几年,国内最火的两种语言非Python与Go莫属,下面这篇文章主要给大家介绍了关于如何使用Python在2秒内评估国际象棋位置的相关资料,需要的朋友可以参考下
    2022-05-05
  • Python实现批量把SVG格式转成png、pdf格式的代码分享

    Python实现批量把SVG格式转成png、pdf格式的代码分享

    这篇文章主要介绍了Python实现批量把SVG格式转成png、pdf格式的代码分享,本文代码需要引用一个第三方模块cairosvg,需要的朋友可以参考下
    2014-08-08
  • Tensorflow中k.gradients()和tf.stop_gradient()用法说明

    Tensorflow中k.gradients()和tf.stop_gradient()用法说明

    这篇文章主要介绍了Tensorflow中k.gradients()和tf.stop_gradient()用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python执行JS的四种方法

    Python执行JS的四种方法

    本文将详细介绍Python中执行和调用JavaScript的多种方法,包括内置的execjs库、外部库如PyExecJS、使用浏览器引擎和与Node.js的交互,感兴趣的可以了解一下
    2023-11-11
  • Pytorch可视化之Visdom使用实例

    Pytorch可视化之Visdom使用实例

    Visdom 是一个专门用于 PyTorch 的交互式可视化工具,可以对实时数据进行丰富的可视化,帮助我们实时监控在远程服务器上进行的科学实验,这篇文章主要给大家介绍了关于Pytorch可视化之Visdom使用的相关资料,需要的朋友可以参考下
    2021-08-08
  • Python进阶之协程详解

    Python进阶之协程详解

    这篇文章主要为大家介绍了Python进阶之协程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Python字符串逐字符或逐词反转方法

    Python字符串逐字符或逐词反转方法

    这篇文章主要介绍了Python字符串逐字符或逐词反转方法,本文对逐字符或逐词分别给出两种方法,需要的朋友可以参考下
    2015-05-05
  • 使用优化器来提升Python程序的执行效率的教程

    使用优化器来提升Python程序的执行效率的教程

    这篇文章主要介绍了使用优化器来提升Python程序的执行效率的教程,包括编写计时器和使用内建的优化器等,需要的朋友可以参考下
    2015-04-04
  • 使用Python实现企业微信通知功能案例分析

    使用Python实现企业微信通知功能案例分析

    这篇文章主要介绍了使用Python实现企业微信通知功能,主要目的是通过企业微信应用给企业成员发消息,通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04

最新评论