python多进程和多线程一起使用_Python干货:多进程与多线程!

今天我们来聊聊Python里面的多进程与多线程编程模式。

01 多线程工作

在开始讲今天的正文之前,先给大家介绍一个概念「多线程工作」,这个概念可能有的人听过,也可能有的人平常工作中就是这么做的。我再来给大家讲讲这个概念,所谓的「多线程工作」就是同时做好几件事情。

拿我个人工作中例子来说,当我用Sql跑数的时候,数据不可能一下子就导出来,我会在一个屏幕上显示Sql运行进度,在另一个屏幕上先做一会PPT,等Sql跑出来以后,我就又会迅速切换到处理刚刚导出来的数据。有的时候数据量很大,用Excel打开文件可能需要几分钟的时间,这个时候Excel是处于运行状态,我是没法在Excel上做别的事情,我会去微信上去处理别人的一些问题,当文件打开以后,我会迅速切换到Excel上继续下一步处理,当我输入一个公式以后,Excel可能又需要等待一会,这个时候我就可以再去做一些别的事情。

大家可以看到,我没有在等一件事情彻底做完以后再去做另一件事情,而是在不同事情之间迅速切换,这种工作方式就可以算是一种「多线程工作」。

「多线程工作」可以减少你等待的时间,大大提高你的工作效率。

02 多进程与多线程

了解了「多线程工作」以后,我们开始进入今天的正题,编程里面的多线程和多进程。在上面的例子中Sql跑数可以算是一个进程、做PPT也可以算是一个进程、Excel处理数据还是一个进程。

进程下面还有一个更小的单位就是线程,一个进程由若干个线程组成,Sql跑数这个进程可以由写Sql、运行Sql、导出数据这几个线程组成。同样,PPT制作这个进程可以由明确主题、选模板、列大纲、丰富页面这几个线程组成。

线程是程序执行的最小单位,一个进程可以由一个或多个线程组成,各个线程之间也是交叉执行。

这里需要注意的是,多进程/多线程并不能做到同时去做好几件事情,而是把不同的事情交叉着做,做一段时间任务a,然后强制停止,去做一会任务b,再停止,再去做任务c。之所以会觉得各个任务之间是同时进行的原因是是任务与任务之间切换速度足够快,这样看起来就像是多个任务同时在进行。

我们再来看两个概念:并行:指在同一时刻,有多条指令在多个处理器上同时执行;

并发:指在同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。

多份工作有多个人同时在做时就是并行,当多份工作由一个人交替在做时就是并发。在计算机中也是同样的概念,计算机中CPU的核数就相当于人数,当计算机是单核多任务时就是并发;当计算机是多核且大于任务数时,就是并行。

目前电脑主流配置都是四核/八线程的,而实际

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,我们可以同时使用多线程多进程来实现并行处理任务。 多线程多进程都是实现并行计算的方式,但它们的实现方式不同。多线程是在同一进程内创建多个线程,每个线程独立运行,但它们共享进程的资源。多进程是创建多个独立的进程,每个进程拥有自己的资源,它们之间通过进程间通信(IPC)进行数据交换。 在Python中,我们可以使用`multiprocessing`模块来创建多进程使用`threading`模块来创建多线程。同时使用多线程多进程可以充分利用CPU资源,提高程序的运行效率。 以下是一个示例代码,同时使用多线程多进程来处理数据: ```python import multiprocessing import threading def process_data(data): # 进程处理数据 pass def thread_data(data): # 线程处理数据 pass if __name__ == '__main__': # 创建进程 process1 = multiprocessing.Process(target=process_data, args=(data,)) process2 = multiprocessing.Process(target=process_data, args=(data,)) # 启动进程 process1.start() process2.start() # 创建线程 thread1 = threading.Thread(target=thread_data, args=(data,)) thread2 = threading.Thread(target=thread_data, args=(data,)) # 启动线程 thread1.start() thread2.start() ``` 在上面的示例代码中,我们创建了两个进程和两个线程来处理数据。在实际应用中,我们需要根据具体情况选择使用多线程多进程或者两者结合使用,以达到最优的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值