python多进程与多线程

本文深入探讨了进程和线程的概念,以及它们在Python中的应用。通过对比多进程与多线程的运行效率,解析了Python多线程运行速度慢的原因,并介绍了GIL对多线程的影响。

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

1、概念
  进程(Process)是计算机中的程序关于某数据集合上的一次运行活动;
  线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
2、使用

  1. 多进程
from multiprocessing import Process
import os,time

def work(times):
    i=0
    for i in range(times):
        i+=1
        
if __name__ == "__main__":
    cpu_num=os.cpu_count()
    print('cpu个数:',cpu_num)
    l = []
    start = time.time()
    for i in range(cpu_num):    #用全部cpu同时计算,可到任务管理器看cpu利用率,接近100%
        p = Process(target=work,args=(100000000,)) #创建并运行子进程
        p.start()
        l.append(p)
    for p in l:
        p.join()    #等待所有子进程运行完
    stop = time.time()
    print("运行时间:%s"%(stop - start))
```![多进程运行时间](https://img-blog.csdnimg.cn/20191112212914569.png)![单进程运行时间](https://img-blog.csdnimg.cn/20191112213317715.PNG)

在这里插入图片描述
在这里插入图片描述
2. 多线程

from threading import Thread
import os,time

def work(times):
    res = 0
    for i in range(times):
        res += i

if __name__ == "__main__":
    cpu_num=os.cpu_count()
    print('cpu个数:',cpu_num)
    l = []
    start = time.time()
    for i in range(cpu_num):  #cpu利用率并未提升,因为多线程是并发执行的,非并行,即宏观上同时执行,微观上先后执行
        p = Thread(target=work,args=(100000000,))  # 多线程
        p.start()
        l.append(p)
    for p in l:
        p.join()
    stop = time.time()
    print("运行时间:%s"%(stop - start))

多线程运行时间
注意: 多线程运行所花的时间比单进程运行所花的时间还要长主要是因为python多线程需要用到GIL这个东西,它会获取和释放锁,具体解释可参考python多线程运行变慢, 因而需要的时间比正常单核执行的时间还要长,但多线程处理能够提高并发度。

基于C#开发的一个稳定可靠的上位机系统,旨在满足工业控制的需求。该系统集成了多个功能界面,如操作界面、监控界面、工艺流显示界面、工艺表界面、工艺编辑界面、曲线界面和异常报警界面。每个界面都经过精心设计,以提高用户体验和工作效率。例如,操作界面和监控界面对触摸屏友好,支持常规点击和数字输入框;工艺流显示界面能够实时展示工艺步骤并变换颜色;工艺表界面支持Excel和加密文件的导入导出;工艺编辑界面采用树形编辑方式;曲线界面可展示八组曲线并自定义纵坐标数值;异常报警界面能够在工艺流程出现问题时及时报警。此外,该系统还支持倍福TC2、TC3和西门子PLC1200/300等下位机设备的通信,确保生产线的顺畅运行。系统参考欧洲工艺软件开发,已稳定运行多年,证明了其可靠性和稳定性。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对C#编程有一定基础的人群。 使用场景及目标:适用于需要构建高效、稳定的工业控制系统的企业和个人开发者。主要目标是提升生产效率、确保生产安全、优化工艺流程管理和实现数据的有效管理传输。 其他说明:文中提供了部分示例代码片段,帮助读者更好地理解具体实现方法。系统的复杂度较高,但凭借C#的强大功能和开发团队的经验,确保了系统的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值