首页 > 编程 > Python > 正文

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

2020-01-04 14:34:58
字体:
来源:转载
供稿:网友

本文实例讲述了Python多线程编程之多线程加锁操作。分享给大家供大家参考,具体如下:

Python语言本身是支持多线程的,不像PHP语言。

下面的例子是多个线程做同一批任务,任务总是有task_num个,每次线程做一个任务(print),做完后继续取任务,直到所有任务完成为止。

# -*- coding:utf-8 -*-#! python2import threadingstart_task = 0task_num = 10000mu = 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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表