# 单线程
from threading import Thread
p =Thread(target=func, args=("arguments",)) p.start() p.join() # 等待子进程结束后再继续往下运行
# 线程池
from concurrent.futures import ThreadPoolExecutor
''' 线程池: map:接收一个函数,和一个参数元组,遍历元组,执行len(元组)次线程 submit:接收一个函数和参数,执行一次线程 :return: ''' with ThreadPoolExecutor(10) as tpe: # args = map(lambda i:'\033[1;32mThreadPoolExecutor %d\033[0m' % i,range(10)) # tpe.map(run,tuple(args)) for i in range(10): tpe.submit(run,'\033[1;32mThreadPoolExecutor %d\033[0m' %i)
#进程以及进程通信
from multiprocessing import Process,Queue,Pipe,Manager
'''
Queue:进程队列,用于数据交换
Pipe:进程管道,用于数据交换
Manager:同步管理器,用于数据共享
'''
# 创建进程队列
queue = Queue()
# 必须在多进程创建之前,创建管道,该管道是双向的
(output_p, input_p) = Pipe()
#创建同步管理器
l = Manager().list()
d = Manager().dict()
p = Process(target=run2, args=(queue,output_p,input_p,l,d)) p.start() p.join() # 等待子进程结束后再继续往下运行
# 进程池
from multiprocessing import Process,Pool
pool = Pool(2)
for i in range(10):
pool.apply_async(func=run, args=('\033[1;32mpool %d\033[0m' % i,))
#close 和join都不能缺少且顺序要对
pool.close()
pool.join()