博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程互斥锁
阅读量:7052 次
发布时间:2019-06-28

本文共 606 字,大约阅读时间需要 2 分钟。

#!/usr/bin/env python

# encoding: utf-8  
# Date: 2018/6/18
from threading import Thread, Lock
import time
n = 100
def task():
    global n
    mutex.acquire()  # 阻止其他99个线程在这里等待,保证数据安全
    temp = n
    time.sleep(0.1)  # 启动一个线程,睡0.1秒足够100个线程全部启动
    n = temp - 1  # 100个线程全部修改为99
    mutex.release()
if __name__ == '__main__':
    mutex = Lock()
    t_l = []
    time1 = time.time()
    for i in range(100):  # 一个进程内开了100个线程
        t = Thread(target=task)
        t_l.append(t)
        t.start()
    for i in t_l:
        t.join()  # 保证主线程执行完毕
    time2 = time.time()
    time3 = time2-time1
    print('主', n, time3)  # 主 0 10.06277322769165

转载于:https://www.cnblogs.com/fmgao-technology/p/9194584.html

你可能感兴趣的文章
Spring Cloud的前世今生
查看>>
Android Studio 教程(干货)
查看>>
hadoop datanode 不能连接 namenode
查看>>
VyOS--企业软路由推荐
查看>>
Winform动态创建控件对DPI的处理
查看>>
new关键字与malloc的区别
查看>>
《Just For Fun》阅读摘抄
查看>>
hibernate4.3.5.Final入门1
查看>>
python 发送邮件模块
查看>>
unqlite安装/使用/测试
查看>>
SQLite 查询或更新上一条插入的数据
查看>>
Win7下搭建android环境
查看>>
那些年不上运维自动化 NO ZUO NO DIE 写下的关机脚本
查看>>
Centos7下安装samba
查看>>
debian7 sudo失效
查看>>
逻辑运算符-||,即或
查看>>
扩展阅读- redis 配置参数详解
查看>>
Apr、Apr-Util 安装
查看>>
Blender中文版下载及相关资料
查看>>
Azure运维系列11:Azure托管磁盘转非托管磁盘
查看>>