美文网首页
Python 爬虫 多线程

Python 爬虫 多线程

作者: 末版车 | 来源:发表于2018-11-02 16:26 被阅读0次

    1、并发---------------------------------------------------------------------------------------------------------------------------

    同时发起多个任务,但是我们的任务是一个一个交替执行的

    并行---------------------------------------------------------------------------------------------------------------------------

    任务数量小于或等于核心的数量,同时执行

    ///////////////////////////////////////////////////////

    补充:对比线程和进程

    (1)、定义

    进程:是操作系统分配资源的调度的基本单元

    线程/:是依赖于进程执行,线程是cpu执行调度的最小单元

    (2)、区别:

    进程是会分配资源空间,每一个进程之间的资源不共享

    线程则不会占用资源空间,线程之间的资源是共享想得,为了防止资源的错乱。我们一般加线程锁

    (3)、使用的场景

    进程一般情况下处理机算密集型任务

    线程一般情况下处理IO密集型任务

    //////////////////////////////////////////////////////////

    2、*********************线程的执行顺序

    import threading

    import time

    def do():

    print('我要唱歌*****'+threading.current_thread().name)

    time.sleep(1)

    def tiao():

    print('我哟=体哦啊**'+threading.current_thread().name)

    time.sleep(1)

    ifname== 'main':

    threads = []

    for i in range(50):

    #创建线程

    td1 = threading.Thread(target=do)

    threads.append(td1)

    td2 = threading.Thread(target=tiao)

    threads.append(td2)

    forthreadinthreads:]

    #开启线程

    thread.start()

    # td1.join()

    3、/多线程

    python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用

    多线程程序的执行顺序是不确定的。当执行到sleep语句时,线程将被阻塞,到sleep结束后,线程进入就绪状态,等待调度。而线程调度将自行选择一个线程执行。上面的代码中只能保证每个线程都运行完整个run函数,但是线程的启动顺序、run函数中每次循环的执行顺序都不能确定。

    注意:

    多线程的优点是:在一个进程内的所有线程共享全局变量,很方便在多个线程间共享数据

    多线程的缺点:缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全)

    4、/互斥锁:

    当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制

    线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁

    1

    注意:

    如果这个锁之前是没有上锁的,那么acquire不会堵塞

    如果在调用acquire对这个锁上锁之前 它已经被 其他线程上了锁,那么此时acquire会堵塞,直到这个锁被解锁为止

    5、锁的好处:确保了某段关键代码只能由一个线程从头到尾完整地执行

    6、锁的坏处:阻止了多线程并发执行,包含锁的某段代码实际上只能以单线程模式执行,效率就大大地下降了由于可以存在多个锁,不同的线程持有不同的锁,并试图获取对方持有的锁时,可能会造成死锁

    死锁案例:

    相关文章

      网友评论

          本文标题:Python 爬虫 多线程

          本文链接:https://www.haomeiwen.com/subject/jbcqxqtx.html