多线程
import threading#调用多线程包
import time
l =[]
res_num=[]#多线程是没法获取返回值的,所以只能通过在函数内把返回值添加到list里面
def num(a,b):
time.sleep(1)
c = a+b
res_num.append(c)#把返回值添加到list,因为多线程是无法获取返回值的
t =threading.Thread(target=num,args=(1,2))#q启动一个子线程,taeget=函数名,args=这个函数传的参数,是元组类型
for i in range(10):
t1 = threading.Thread(target=num, args=(1, 2))#启动10个线程
l.append(t1)#把线程对象加到列表内
t1.start()#运行线程
for u in l:
u.join()#让主线程等待子线程运行结束后再继续往下走
print(u)#如果不加join,主线程不管子线程是否运行完都会往下执行
print('子线程运行结束后,在打印我',res_num)
# 守护线程
import threading,time
def haha():
time.sleep(2)
print('hahah')
for i in range(10):
t = threading.Thread(target=haha)
t.setDaemon(True)#守护线程,只要主线程运行结束了,不管子线程是否执行完毕,直接结束
t.start()
# 多进程 多进程也有和线程一样的join方法等
from multiprocessing import Process
def test(i):
time.sleep(1)
print(i)
if __name__ == '__main__':
for i in range(5):
p =Process(target=test,args=('aaa',))
p.start()