python入门(三十六):threading模块

来源:互联网 发布:优化约束问题正则化 编辑:程序博客网 时间:2024/06/10 07:20

1.Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。

2.

import threadingimport timedef f0():    passdef f1(a1):    time.sleep(5)    f0()t = threading.Thread(target=f1, args=(123,))#创建子线程t.setDaemon(True)#默认主线程会等待子线程(默认值为False)改为TRUE后主线程将不再等待子线程t.start()#执行线程,时间不可预期t.join(2)#不加2时等待该子线程执行完再接着往下执行,加2表示最多等两秒 
3.线程锁
import threadingimport timegl_num = 0lock = threading.RLock()def Func():    lock.acquire()#获得锁     global gl_num    gl_num += 1    time.sleep(1)    print(gl_num)    lock.release()#释放锁for i in range(10):    t = threading.Thread(target=Func)    t.start()

4.事件event
python线程的事件用于主线程控制其他线程的执行,事件主要提供了三个方法 set、wait、clear。事件处理的机制:全局定义了一个“Flag”,如果“Flag”值为 False,那么当程序执行 event.wait 方
法时就会阻塞,如果“Flag”值为True,那么event.wait 方法时便不再阻塞。clear:将“Flag”设置为Falseset:将“Flag”设置为True
import threadingdef do(event):    print('start')    event.wait()    print('execute')event_obj = threading.Event()for i in range(10):    t = threading.Thread(target=do, args=(event_obj,))    t.start()event_obj.clear()inp = input('input:')if inp == 'true':    event_obj.set()

原创粉丝点击