python web框架 多线程和多进程_python的多线程和多进程(一)

在进入主题之前,我们先学习一下并发和并行的概念:

--并发:在操作系统中,并发是指一个时间段中有几个程序都处于启动到运行完毕之间,且这几个程序都是在同一个处理机上运行。但任一时刻点上只有一个程序在处理机上运行。形象的点描述:一个人做很多事情,但同一时刻只能做一件事情。

--并行:当系统有一个CPU时,则程序的操作有可能非并发。当一个CPU执行一个程序时,另一个CPU可以执行另一个程序,两个程序互不抢占CPU资源,可以同时进行。形象的描述:多人同时做多件事情

可能有小伙伴又会问串行又是什么鬼呢?再来唠叨一下:

串行和并行是数据传输方式的区别。其实和并发和并行的概念是两个领域:

1、数据传输方式不同,串行口传输方式为数据排成一行,一位一位送出,接受也是一样。并行口传输8位数据一次送出。

2、针脚不同,串行口针脚少,并行口针脚多

3、用途不同,串行口现在只用作控制接口,并行口多用作打印机、扫描仪等接口。

来吧,进入正题:

进程的概念:计算机程序其实只是存储在磁盘上可执行的二进制(或其他可执行的类型)文件。只有把它们加载到内存中并被操作系统调用,才算是被执行,并用拥有生命周期。所以说进程是一个执行中的程序。

每个进程都拥有自己的地址空间,内存,数据栈以及其他用于跟踪执行的辅助数据。

此间,操作系统管理其上的所有进程的执行,并为这些进程合理分配时间。

多进程:那就是在一个多核的电脑上同时运行多个程呗,其实是实现并行。

但是呢,我们先从多线程学习起。多线程搞定了,多进程也就是小意思了。

在此之前先介绍一个概念,之后会用到。GIL锁,有可能大家会听到别人说python运行很慢啥的,其实就是这个GIL锁的原因,那它到底是个啥呢:

GIL全局解释性锁,python在设计的时候,还没有多核处理器的概念。因此,为了设计的方便和线程的安全,python之父就设计了一个锁。这个锁要求,任何一个进程中,同时只能有一个线程在执行。因此并不能多个线程分配多个CPU资源。所以python中的线程只能实现并发,而不能实现真正的并行,这就是python所线程的局限性。在python3中GIL锁进行了该井,在遇到任何IO阻塞(不是耗时)的时候,会自动切换线程,这就使得在进行多IO操作的时候python的锁多线程有很大的优势。同时一个线程在运行时间或者运行步骤达到一定的阈值时,也会自动的切换线程。

对比于多进程,多线程其实是实现并发的操作,在在python中使用multiprocessing包实现多进程:

首先来看下多线程的实现,这里使用的是threading包。用sleep模拟耗时操作:

1 importtime2 importthreading3

4 defget_detail_html(url):5 print("starting get detail html")6 time.sleep(4)7 print("ending get detail html")8

9 defget_detail_url(url):10 print("starting get detail url")11 time.sleep(2)12 print("ending get detail url")13

14 if __name__ == '__main__':15 thread1 = threading.Thread(target=get_detail_html, args=("",))16 thread2 = threading.Thread(target=get_detail_url, args=("",))17 start_time =time.time()18 thread1.setDaemon(True)

19 thread2.setDaemon(True)

20 thread1.start()21 thread2.start()22 print(123456)23 thread1.join()

24 thread2.join()

25    print("using time: {}".format(time.time()-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值