python中的进程和线程

本文介绍了Python中的进程和线程概念。进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位。进程之间不共享全局变量,而线程共享全局变量但需通过互斥锁防止数据紊乱。此外,文章还探讨了进程与线程的关系及它们的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、进程:

        进程是并行执行:多个进程可以同时做不同的事。

        进程是操作系统进行资源分配的基本单位。

        一个程序运行后至少有一个进程,一个进程默认有一个线程,进程里面可以创建多个线程,线程是依附在进程里面的,没有进程就没有线程

1、创建进程:

""" 导入进程模块 """
import multiprossing

""" 创建进程实例对象 """
# target: 进程执行的方法名
# args: 传入元组形式的参数
# kwargs: 传入字典形式的参数,字典的key要和方法中的参数名保持一致
# daemon: 创建进程是设置守护进程
test_process = multiprocessing.Process(target: function, [args=(,)/kwargs={'key': value}], daemon=True)

# 进程创建后设置守护进程(需要在进程启动之前)
test_process.daemon = True

# 启动进程
test_process.start()

# 主进程等待当前进程 test_process 执行结束后才会执行后面的代码
test_process.join()

# 终止进程(可以在进程运行时终止)
test_process.terminate()

2、多个进程不共享全局变量:每一个进程都是相互独立的

二、线程:

        线程是并发执行:多个线程同时做同一件事。

        线程是cpu调度的基本单位。

1、创建线程:

""" 导入线程模块 """
import threading

""" 创建线程实例对象 """
# target: 线程执行的方法名
# args: 传入元组形式的参数
# kwargs: 传入字典形式的参数,字典的key要和方法中的参数名保持一致
# daemon: 创建线程是设置守护线程
test_thread = threading.Thread(target: function, [args=(,)/kwargs={'key': value}], daemon=True)

# 线程创建后设置守护线程(需要在线程启动之前)
test_thread.daemon = True
# 或
test_thread.setDaemon(True)

# 启动线程
test_thread.start()

# 主线程等待当前线程 test_thread 执行结束后才会执行后面的代码
test_thread.join()

2、多个线程共享全局变量,线程的运行是无序的

3、互斥锁

        如果多个线程在同一时间同时调用全局变量,会使全局变量的数据发生紊乱,这时可以创建互斥锁。

目的:保证一次只有一个线程访问全局变量,防止全局变量发生数据紊乱。

代码:

import threading

# 创建互斥锁
mutex = threading.Lock()

# 抢锁(一次只允许一个线程进入)
mutex.acquire()

# 释放(释放后可以让下一个线程进入)
mutex.release()

三、进程和线程的关系

1、关系

        (1) 线程是依附在进程里的,没有进程就没有线程。

        (2) 一个进程默认提供一条线程,进程可以创建多个线程。

2、区别

        (1) 进程之间不共享全局变量。

        (2) 线程之间共享全局变量,但是会有资源竞争,解决办法:线程同步或互斥锁。

        (3) 创建进程的开销比创建线程开销大。

        (4) 进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位。

        (5) 线程不能独立运行,必须依存在进程中。

        (6) 多进程开发比单进程多线程开发稳定性更强。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值