多线程执行
单一执行线程
import threading
import time
def saynb(): # 定义一个函数
print('new bee~')
time.sleep(1)
if __name__ == "__main__":
for i in range(5):
t = threading.Thread(target=saynb) # 创建一个对象
t.start() # 启动线程
线程执行多个任务
import threading
def saynb(): # 定义一个函数
for i in range(5):
print('new bee~')
def sayyouxi():
for i in range(5):
print('youxi!')
def main():
t1 = threading.Thread(target=saynb)
t2 = threading.Thread(target=sayyouxi)
t1.start()
t2.start()
if __name__ == '__main__':
main()
进程池
from multiprocessing import Pool
import os,time,random
from multiprocessing import Pool
def worker(msg):
t_start = time.time()
print("%s开始执行,进程号为%d"%(msg,os.getpid()))
# random.random()随机生成0~1之间的浮点数
time.sleep(random.random()*2)
t_stop = time.time()
print(msg,"执行完毕,耗时%0.2f"%(t_stop-t_start))
po = Pool(3) # 定义一个进程池,最大进程数3
for i in range(0,10):
# Pool().apply_async(要调用的目标,(传递给目标的参数元组,))
# 每一次循环将会用空闲出来的子进程去调用目标
po.apply_async(worker,(i,))
print("---start---")
po.close() # 关闭进程池,关闭后po不再接收新的请求
po.join() # 等待po中所有子进程执行完成,必须放再close语句之后
print("---end---")