Python 基础入门 10_2 进程线程和协程

"""
线程:是进程执行任务的最小单元。
线程和进程的区别:
1.进程是有独立的存储空间,而线程共享的是进程的存储空间
2.进程是最小的执行单位,而进程是分配和管理资源的最小单位
3.线程实现的并发数比进程的并发数多
每一个进程都会有一个主线程,这个主线程管理进程的所有添加的线程。当一个线程被创建,且执行完任务后,这个线程会自动销毁

线程的模块有:
1._thread模块 底层模块
2.threding模块 对_thread进行了封装
"""
import threading
var = 1
def run1():
print("子线程:%s 开始" %(threading.current_thread().name)) # threading.current_thread(),返回当前线程对象
print("子线程:%s 结束" %(threading.current_thread().name))

def run2():
print("子线程:%s 开始" %(threading.current_thread().name))
print("子线程:%s 结束" %(threading.current_thread().name))

def run3():
print("哈哈哈哈")
print(threading.currentThread().name)
print("哈哈哈哈")

sem = threading.Semaphore(3) #设置线程指定并发数,一个进程同时只能并发指定的个线程
def run4():
with sem: #启动线程指定并发数设定
print("并发",threading.currentThread().name)
time.sleep(3)

bar = threading.Barrier(3) #设置线程组合并发数,一个进程的线程组合到指定的线程数后并发,若组合不到,一直等待
def run5():
bar.wait() #启动线程组合并发数设定
print("组合",threading.currentThread().name)
time.sleep(3)

# if __name__ =="__main__":
#
# t1 = threading.Thread(target=run1) #threading.Thread(target,[args],name) 创建执行targer函数并命名为name的线程,args给这个函数传参
# t2 = threading.Thread(target=run2)
#
# t1.start(),t2.start() #Thread对象.start()启动线程
# t1.join(),t2.join() #Thread对象.join() 执行线程内容,无视并发
#
# t3 = threading.Timer(1,run3) #Thread对象.Timer(interval,target,[args]) 创建一个定时线程,在程序执行后的interval时间后创建线程
# t3.start(),t3.join()
#
# for i in range(5):
# threading.Thread(target=run4).start()
#
# for i in range(5):
# threading.Thread(target=run5).start()
#
# print("主线程(%s)启动" %(threading.current_thread().name))

猜你喜欢

转载自www.cnblogs.com/hjlin/p/10663356.html