zoukankan      html  css  js  c++  java
  • Python3 多线程编程(thread、threading模块)

    threading是对thread的封装。

    1、开启线程:

        t=threading.Thread(target=sayhi,args=('hh',))
        t.start()

    或者先建一个Thread的继承类,然后用这个类中的start()方法打开;

    2、主进程下开启子进程:

        t=multiprocessing.Process(target=work)
        t.start()

       程序会先执行主程序的语句,再执行此子进程的目标函数work();

    3、t.setDadmon() 设置守护进程;必须在start()之前设置;如果为True则主程序不用等此线程结束后再结束主程序;

    1 t.join()                 等待线程结束;
    2 t.isAlive()              返回线程是否活动;
    3 t.getName()               返回线程名。
    4 t.setName()               设置线程名。
    5 threading.currentThread()    返回当前线程变量;
    6 threading.enumerate()        返回一个包含正在运行线程的列表;
    7 threading.activeCount()      返回正在运行的线程数量;
    8 threading.Semaphore(5)       限制最大连接数为5,semaphore是一个acquire,release的计数器;

    多线程用于IO密集型,如socket,爬虫,web

    多进程用于计算密集型,如金融分析

    4、同步锁

    R=threading.Lock()
    R.acquire()
    '''
    对公共数据的操作
    '''
    R.release()

    用于对共享资源同步访问的限制,只有当一个线程访问完毕后另一个线程才能访问。

    5、死锁

    使用RLock()代替Lock()可解决,因为RLock()使资源可以被多次acquire,但只有直到一个线程所有的acquire都被release之后其他线程才能获得资源。

    而使用Semaphore(n)则可限制资源的同时最大可访问线程数;

    6、Event对象

    用于多线程之间的通信和同步,初始情况下event对象中信号标志为False;

    Event对象方法:

    1 isSet()          返回event的状态值;
    2 wait()           如果event.isSet() == False 将阻塞线程,即等待;
    3 set()          设置event的状态值;
    4 clear()          恢复event的状态值为False; 

    7、线程queue

    实例queue.Queue()    先进先出;

    实例queue.LifoQueue()      后进先出;

    实例queue.PriorityQueeu() 接受一个优先级参数,根据优先级大小决定顺序;

  • 相关阅读:
    第二个月课堂009python之总结(002)
    python的接口自动化测试+ddt数据驱动(*****)
    python题(002)
    selenium问题归纳一:多个句柄索引会乱的问题
    多测师讲解python讲解__xlwt__模块(拓展莫模块002)
    多测师python面试题__整理和答案(001)高级讲师肖sir
    第二个月课堂012讲解 _ Unittest框架(上)_高级讲师肖sir
    多测师讲解课堂11课__selenium__错归纳_高级讲师肖sir
    ActionChains定位元素
    css使用方法
  • 原文地址:https://www.cnblogs.com/aland-1415/p/7197021.html
Copyright © 2011-2022 走看看