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多线程编程之多线程加锁操作示例 的全部内容, 来源链接: utcz.com/z/344516.html

回到顶部