1. 什么是进程和线程?
进程和线程是操作系统中用于执行任务的基本单位。
- 进程(Process)是指在计算机中运行的程序的实例。每个进程都有自己的地址空间、内存、文件描述符等资源。
- 线程(Thread)是进程中的一个执行单元,一个进程可以包含多个线程。线程共享进程的资源,包括内存、文件等。
2. 单核CPU实现任务的原理
在单核CPU上,只能同时执行一个任务。操作系统通过时间片轮转的方式,将CPU的执行时间划分为多个时间片段,每个任务在一个时间片段内执行一段时间,然后切换到下一个任务。这样,多个任务在CPU上交替执行,给用户的感觉是同时执行。
3. 多核CPU实现任务的原理
多核CPU可以同时执行多个任务,每个核心可以独立执行一个任务。操作系统会将多个任务分配给不同的核心,使得多个任务可以并行执行,提高了系统的处理能力。
4. 并发与并行的概念介绍
- 并发(Concurrency)是指多个任务交替执行的过程,多个任务之间可能是串行执行的,也可能是并行执行的。并发可以提高系统的吞吐量和响应性。
- 并行(Parallelism)是指多个任务同时执行的过程,多个任务在不同的处理器上同时执行,真正实现了同时执行。
5 案例举例.
当在Python中创建多个进程时,每个进程都有自己独立的内存空间,因此进程中的全局变量是不共享的。为了演示这一点,我们可以使用multiprocessing模块来创建多个进程,并在每个进程中修改全局变量的值。
import multiprocessing
# 全局变量
global_var = 0
def process_func():
global global_var
global_var += 1
print(f"进程ID: {multiprocessing.current_process().pid},全局变量值: {global_var}")
if __name__ == "__main__":
# 创建两个进程
process1 = multiprocessing.Process(target=process_func)
process2 = multiprocessing.Process(target=process_func)
# 启动进程
process1.start()
process2.start()
# 等待进程结束
process1.join()
process2.join()
print(f"最终全局变量值: {global_var}")
在上面的代码中,我们创建了两个进程process1和process2,它们都会执行process_func函数。在process_func函数中,我们通过global关键字将global_var声明为全局变量,并在每个进程中对其进行自增操作。然后,我们打印出每个进程的ID和全局变量的值。
运行上述代码,你会发现每个进程中的全局变量值是独立的,它们不会相互影响。这是因为每个进程都有自己独立的内存空间,对全局变量的修改只会影响当前进程的内存,不会影响其他进程。
最后,我们打印出最终的全局变量值,你会发现它仍然是0,这是因为全局变量在每个进程中都是独立的,它们不会被其他进程的修改所影响。
总结起来,进程中的全局变量是不共享的,每个进程都有自己独立的内存空间。如果需要在多个进程之间共享数据,可以使用multiprocessing模块提供的共享内存或进程间通信机制。













网友评论