#!usr/bin/env python
#-*-Coding:utf-8-*-
__author__ = "Samson"
Import Threading,time
def run (N):
Print ("task", N)
Time.sleep (2)
Print ("Current thread:", Threading.current_thread ()) #当前线程
T_obj = [] #存线程实例
Start_time = Time.time ()
For I in range (50):
t = Threading. Thread (target=run,args= ("t%s"%i,))
#t. Setdaemon (True) #把当前线程设置为守护线程, must be set before T.start () to function as the main thread will not wait for the child thread to end
T.start ()
T_obj.append (t)
Print ("Total thread:", Threading.active_count ()) #总线程数
For T in T_obj:
T.join () #等待线程执行完
Print ("%s"% (ABS (Start_time-time.time ())))
Multi-threaded lock
#!usr/bin/env python
#-*-Coding:utf-8-*-
__author__ = "Samson"
Import Threading,time
def run (N):
Lock.acquire () #锁上
Global num
num + = 1
#time. Sleep (1) #会变为单线程
Lock.release () #解锁
Lock = Threading. Lock () #创建锁
num = 0
T_obj = [] #存线程实例
For I in range (50):
t = Threading. Thread (target=run,args= ("t%s"%i,))
T.start ()
T_obj.append (t)
For T in T_obj:
T.join ()
Print ("%s"%num)
Multi-threaded recursive lock
#!usr/bin/env python
#-*-Coding:utf-8-*-
__author__ = "Samson"
Import Threading,time
def run ():
Lock.acquire () #锁上
res = RUN1 ()
Res2 = Run2 ()
Lock.release () #解锁
Def run1 ():
Lock.acquire () #锁上
Global num
num + = 1
Lock.release () #解锁
Def run2 ():
Lock.acquire () #锁上
Global num
num + = 1
Lock.release () #解锁
Lock = Threading. Rlock () #创建递归锁
num = 0
For I in range (10):
t = Threading. Thread (Target=run)
T.start ()
Print ("Now:", Threading.active_count ())
While Threading.active_count ()! = 1:
Print (Threading.active_count ())
Else
Print ("%s"%num)
Python: Thread, multi-thread lock, multi-threaded recursive locks