网络编程
位置:首页>> 网络编程>> Python编程>> Python多线程编程之多线程加锁操作示例

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

作者:旭东的博客  发布时间:2023-11-01 00:37:19 

标签: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程序设计有所帮助。

来源:https://www.cnblogs.com/xudong-bupt/p/4830895.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com