zoukankan      html  css  js  c++  java
  • Python3 多线程的使用

    多线程

    • 多线程使用的是thread库,多进程使用的是multiprocessing库,建议不要使用多线程进行爬虫。
    • 在Python多线程下,每个线程的执行方式:
      • 获取GIL(Global Interpreter Lock(全局解释器锁))
      • 执行代码直到sleep或者是Python虚拟机将其挂起
      • 释放GIL

    注释:

    1.GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定。

    2.每个CPU在同一时间只能执行一个线程(在单核CPU下的多线程其实都只是并发,不是并行,并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。)

    多线程的使用方法

    使用Theading模块创建线程

    文档地址:https://docs.python.org/3/library/threading.html

     1.直接实例化threading.Thread线程对象,实现多线程

    实例
    import threading
    import time
    
    
    def print_age(who, age):
        """
        需要用多线程调用的函数
        :param who:
        :param age:
        :return:
        """
        print("Hello,every one!")
        time.sleep(1)
        print("%s is %s years old !" % (who, age))
    
    if __name__ == "__main__":
        t1 = threading.Thread(target=print_age, args=("jet", 18, ))     # 创建线程1
        t2 = threading.Thread(target=print_age, args=("jack", 25, ))    # 创建线程2
        t3 = threading.Thread(target=print_age, args=("jack", 25,))     # 创建线程3
        t1.start()    # 运行线程1
        t2.start()    # 运行线程2
        t3.start()    # 运行线程3
        print("over...")
    

    2.通过继承threading.Thread,并重写run()方法,来实现多线程

    import threading
    import time
    
    
    class MyThread(threading.Thread):
        """
        使用继承的方式实现多线程
        """
        def __init__(self, who):
            super().__init__()    # 必须调用父类的构造方法
            self.name = who
    
        def run(self):
            print("%s is run..." % self.name)
            time.sleep(3)
    
    if __name__ == "__main__":
        t1 = MyThread("Jet")    # 创建线程1
        t2 = MyThread("Jack")   # 创建线程2
        t1.start()              # 运行线程1
        t2.start()              # 运行线程2
        print("over...")
    
  • 相关阅读:
    linux下给U盘分区&制作文件系统
    迭代器 配接器
    仿函数
    在查询用户的权限的时候 使用左外连接 和 access数据库中左外连接
    C# 想要程序文件移动 而数据保持相对位置
    C# 第三方控件 下面的Item不显示了
    C# 第三方控件 错误 LC-1
    c# 第三方控件 闪退
    access 语句错误
    poj 1469(二分图 最大匹配)
  • 原文地址:https://www.cnblogs.com/spmt/p/10529032.html
Copyright © 2011-2022 走看看