Day15:多线程编程
在上一节中,我们学习了 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. 任何对编程感兴趣的,且愿意掌握一门技能的人

查看1道真题和解析