Day15:多线程编程

alt

链接点击订阅

在上一节中,我们学习了 Python 的内置函数,包括类型转换、数学计算、序列操作、输入输出和其他常用函数。这些函数在实际的编程中经常使用,灵活掌握函数的使用,能够帮助我们快速完成编程,“给我一个Python库,总有一个函数能够实现你的需求”。在本节中,我们将探讨 Python 中的多线程编程。

1. 多线程编程

多线程是一种并发编程的方式,允许我们在一个程序中同时执行多个线程,提高程序的效率和响应性。

在 Python 中,我们可以使用 threading 模块来创建和管理线程。下面是一个简单的多线程示例:

import threading
import time

def worker():
    print("Worker thread started")

    # 执行一些耗时操作
    for i in range(5):
        print("Working...")
        time.sleep(1) #模拟等待1s
    
    print("Worker thread finished")

print("Main thread started")
thread = threading.Thread(target=worker)
thread.start()

# 主线程继续执行其他操作
for i in range(3):
    print("Main thread working...")

# 等待工作线程执行完毕
thread.join()

print("Main thread finished")

在上面的示例中,我们创建了一个工作线程 worker,并使用 threading.Thread 类将其封装成线程对象。通过调用线程对象的 start() 方法,我们启动了工作线程的执行。同时,主线程继续执行其他操作。最后,我们使用 join() 方法等待工作线程执行完毕。执行结果如下所示:

Main thread started
Worker thread started
Working...
Main thread working...
Main thread working...
Main thread working...
Working...
Working...
Working...
Working...
Worker thread finished
Main thread finished

我们可以发现工作线程 worker中有等待的代码,此时主线程没有等待工作线程结束,而是继续执行自己的代码,然后才回到了工作线程。

3. 线程同步与互斥锁

在多线程编程中,当多个线程同时访问共享资源时,可能会引发数据竞争和不一致的问题。为了解决这个问题,我们需要使用线程同步机制来确保线程间的顺序和互斥性。

在 Python 中,我们可以使用互斥锁(Lock)来实现线程的互斥访问。下面是一个使用互斥锁的示例:

import threading

# 创建一个互斥锁
lock = thread

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

大模型-AI小册 文章被收录于专栏

1. AI爱好者,爱搞事的 2. 想要掌握第二门语言的Javaer或者golanger 3. 决定考计算机领域研究生,给实验室搬砖的uu,强烈建议你花时间学完这个,后续搬砖比较猛 4. 任何对编程感兴趣的,且愿意掌握一门技能的人

全部评论
我为什么输出了500000
点赞 回复
分享
发布于 2023-07-14 14:56 上海

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务