python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python 线程同步

Python中线程同步的实现

作者:菜逼の世界

本文主要介绍了Python中线程同步的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

多线程

案例

说明:

代码

# 导入线程模块
import threading
import time


def sing(name,age):
    time.sleep(2)
    print('唱歌者姓名:' + name + ',年龄:' + str(age))
    print('正在唱歌...')


def dance(name, age):
    time.sleep(2)
    print('跳舞者姓名:' + name + ',年龄:' + str(age))
    print('正在跳舞...')


if __name__ == '__main__':
    # args 元组传参
    t1 = threading.Thread(target=sing,args=('Alice', 18))
    # kwargs 对象传参
    t2 = threading.Thread(target=dance,kwargs={'name': 'Bob', 'age': 18})
    t1.start()
    t2.start()
    print("主线程结束")

在这里插入图片描述

问题现象

解决办法

线程同步

线程等待

调用线程的等待方法: join()

# 导入线程模块
from threading import Thread
import time


def sing(name,age):
    time.sleep(2)
    print('唱歌者姓名:' + name + ',年龄:' + str(age))
    print('正在唱歌...')


def dance(name, age):
    time.sleep(2)
    print('跳舞者姓名:' + name + ',年龄:' + str(age))
    print('正在跳舞...')


if __name__ == '__main__':
    # args 元组传参
    t1 = Thread(target=sing,args=('Alice', 18))
    # kwargs 对象传参
    t2 = Thread(target=dance,kwargs={'name': 'Bob', 'age': 18})
    t1.start()
    t1.join()
    t2.start()
    t2.join()
    print("主线程结束")

在这里插入图片描述

互斥锁

步骤:

代码

# 导入线程模块
from threading import Thread, Lock
import time


def sing(name, age):
    # 获取锁,用于线程同步
    lock.acquire()
    time.sleep(2)
    print('唱歌者姓名:' + name + ',年龄:' + str(age))
    print('正在唱歌...')
    # 释放锁,开启下一个线程
    lock.release()


def dance(name, age):
    # 获取锁,用于线程同步
    lock.acquire()
    time.sleep(2)
    print('跳舞者姓名:' + name + ',年龄:' + str(age))
    print('正在跳舞...')
    # 释放锁,开启下一个线程
    lock.release()


# 创建一个锁
lock = Lock()
if __name__ == '__main__':
    # args 元组传参
    t1 = Thread(target=sing, args=('Alice', 18))
    # kwargs 对象传参
    t2 = Thread(target=dance, kwargs={'name': 'Bob', 'age': 18})
    t1.start()
    # t1.join()
    t2.start()
    # t2.join()
    # print("主线程结束")

运行

在这里插入图片描述

到此这篇关于Python中线程同步的实现的文章就介绍到这了,更多相关Python 线程同步内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文