zoukankan      html  css  js  c++  java
  • 【Python3 爬虫】U23_多线程爬虫之初识多线程

    1.什么是"多线程"?

    多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。举个最简单的例子说明:多线程就像火车的每一个车厢,而进程则是火车。
    并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)。
    并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的。

    2.threading模块

    Python中的threading模块是专门用来做多线程编程的,threading模块中最常用的类是Thread,下面是一个简单的小案例:
    以下是一个跳舞、唱歌的场景,某人可以先跳会舞,再唱会歌,但是为了节省时间,他也可以一边跳舞一边唱歌。
    不使用多线程

    import time
    def dance():
        # 跳舞5s中
        for x in range(1,6):
            print('我正在跳舞,%s秒' %x)
            time.sleep(1)
    
    def sing():
        # 唱歌5s中
        for x in range(1,6):
            print('我正在唱歌,%s秒' %x)
            time.sleep(1)
    def main():
        dance()
        sing()
    
    if __name__ == '__main__':
        main()
    

    打印结果:

    使用多线程

    import threading
    import time
    def dance():
        # 跳舞5s中
        for x in range(1,6):
            print('我正在跳舞,%s秒' %x)
            time.sleep(1)
    
    def sing():
        # 唱歌5s中
        for x in range(1,6):
            print('我正在唱歌,%s秒' %x)
            time.sleep(1)
    def main():
        t1 = threading.Thread(target=dance)
        t2 = threading.Thread(target=sing)
    
        t1.start()
        t2.start()
    
    if __name__ == '__main__':
        main()
    

    打印结果:

  • 相关阅读:
    Silerlight 控制datagrid控件多选时不显示详细信息
    正则表达式限制文本框只能输入数字,小数点,英文字母,汉字
    图片正则表达式
    css最小高度,最大高度important
    让网页变灰色兼容各种浏览器
    edecms v5.7模块管理列表为空没有内容
    统一日志的记录格式,用宏调用printf
    出差
    使窗体在指定窗口的顶层
    C BNF grammar
  • 原文地址:https://www.cnblogs.com/OliverQin/p/12631844.html
Copyright © 2011-2022 走看看