Python3多线程如何为?
摘要:简单实现多线程 import threading import time def sing(sing): for i in range(5): print(" sing() {}".for
简单实现多线程
import threading
import time
def sing(sing):
for i in range(5):
print("---sing()---{}".format(sing))
time.sleep(1)
def dance(dance):
for i in range(5):
print("---dance()---{}".format(dance))
time.sleep(1)
def main():
t1 = threading.Thread(target=sing,args=("t1",))
t2 = threading.Thread(target=dance,args=("t2",))
t1.start()
t2.start()
if __name__ == "__main__":
main()
多线程互斥锁
import threading
import time
A = 2
lock = threading.Lock()
#创建一个互斥锁
def sing(sing):
global A
for i in range(500000):
lock.acquire()
#加锁
A += 1
lock.release()
#解锁
print('{}:{}'.format(sing,i))
def dance(dance):
global A
for i in range(500000):
lock.acquire()
#加锁
A -= 1
lock.release()
#解锁
print('{}:{}'.format(dance,i))
def main():
global A
t1 = threading.Thread(target=sing,args=("t1",))
t2 = threading.Thread(target=dance,args=("t2",))
t1.start()
t2.start()
t1.join()
t2.join()
print(A)
if __name__ == "__main__":
main()
查看线程数量
使用
threading.enumerate()
获取当前所有线程。
此处打印出一个列表,列表中共有3个线程信息。一个是主线程,另外两个是子线程
这里需要注意,我们需要在代码中使用join()方法来阻塞主线程。当所有阻塞的子线程执行完毕后,才会继续执行主线程。
