多线程和多进程都是实现并发执行的方式,可以提高程序的运行效率和资源利用率。简单来说,多线程是在一个进程内创建多个线程来执行不同的任务,而多进程则是在操作系统中创建多个独立的进程来执行不同的任务。
多线程的概念: 多线程是指程序中创建多个线程来同时执行不同的任务。每个线程独立运行,拥有自己的程序计数器、栈和局部变量等,但共享进程的资源(如全局变量、打开的文件等)。多线程可以提高程序的并发性和响应性,适用于多核 CPU 的并行计算。
多线程的代码示例:
import threading
def print_num(num):
for i in range(num):
print(i)
def print_letter():
for letter in ['A', 'B', 'C']:
print(letter)
if __name__ == "__main__":
t1 = threading.Thread(target=print_num, args=(5,))
t2 = threading.Thread(target=print_letter)
t1.start() # 启动线程1
t2.start() # 启动线程2
t1.join() # 等待线程1结束
t2.join() # 等待线程2结束
多进程的概念: 多进程是指在操作系统中同时运行多个独立的进程,每个进程有自己独立的地址空间,拥有自己的代码段、数据段和堆栈。多进程可以实现真正的并行计算,适用于密集型计算任务。
多进程的代码示例:
import multiprocessing
def print_num(num):
for i in range(num):
print(i)
def print_letter():
for letter in ['A', 'B', 'C']:
print(letter)
if __name__ == "__main__":
p1 = multiprocessing.Process(target=print_num, args=(5,))
p2 = multiprocessing.Process(target=print_letter)
p1.start() # 启动进程1
p2.start() # 启动进程2
p1.join() # 等待进程1结束
p2.join() # 等待进程2结束
以上是简单的多线程和多进程的示例代码,通过创建线程或进程来执行不同的任务。需要注意的是,在多线程和多进程中,共享资源的访问需要考虑线程安全的问题,例如使用锁机制来保证共享资源的互斥访问。