进程和线程的概念

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}")

在上面的代码中,我们创建了两个进程process1process2,它们都会执行process_func函数。在process_func函数中,我们通过global关键字将global_var声明为全局变量,并在每个进程中对其进行自增操作。然后,我们打印出每个进程的ID和全局变量的值。

运行上述代码,你会发现每个进程中的全局变量值是独立的,它们不会相互影响。这是因为每个进程都有自己独立的内存空间,对全局变量的修改只会影响当前进程的内存,不会影响其他进程。

最后,我们打印出最终的全局变量值,你会发现它仍然是0,这是因为全局变量在每个进程中都是独立的,它们不会被其他进程的修改所影响。

总结起来,进程中的全局变量是不共享的,每个进程都有自己独立的内存空间。如果需要在多个进程之间共享数据,可以使用multiprocessing模块提供的共享内存或进程间通信机制。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容