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. 任何对编程感兴趣的,且愿意掌握一门技能的人