python就业班---进程

    科技2022-07-15  123

    """ 进程状态: 1.就绪态 2.执行态 3.等待态 """ import threading import time # 使用进程实现多任务 # import multiprocessing # # def test1(): # while True: # print("1------") # time.sleep(1) # # def test2(): # while True: # print("2------") # time.sleep(1) # # def main(): # # t1=threading.Thread(target=test1) # # t2=threading.Thread(target=test2) # # t1.start() # # t2.start() # t1=multiprocessing.Process(target=test1) # t2=multiprocessing.Process(target=test2) # t1.start() # t2.start() # # # if __name__=="__main__": # main() # 代码+资源==进程:耗费的资源比较大 # """ # 进程和线程对比: # 1.进程和线程都能完成多任务 # 2.进程是资源分配的单位,一个进程里边至少又多个主线程 # 线程不能够独立执行,必须依存在进程中,进程相当于一条流水线,线程相当于这个流水线上的工人 # 3.优缺点:线程和进程在使用上各有缺点:线程执行开销小,但不利于资源的管理和保护;而进程正好相反 # """ # Queue队列:先进先出 # from multiprocessing import Queue # # import multiprocessing # q=Queue(3) # # q=multiprocessing.Queue(3) # # # 放数据:数据类型任意,队列满了往里放数据会堵塞 # q.put("wef") # q.put(22) # q.put([11,22,33,3333]) # # # 取数据:队列空了再取数据会堵塞 # a=q.get() # print(a) # b=q.get() # # # # 判断是否为满 # q.full() # # # 判断是否为空 # q.empty() """多进程之间通过Queue实现数据共享""" # import multiprocessing # # def download_from_web(q): # """下载数据""" # #模拟从网上下载数据 # data=[11,22,33,44] # # # 向队列中写入数据 # for temp in data: # q.put(temp) # # print("---下载器已经下载完了数据并且存入到队列中----") # # # def analysis_data(q): # """数据处理""" # waitting_analysis_data=list() # # 从队列中获取数据, # while True: # data=q.get() # waitting_analysis_data.append(data) # # if q.empty(): # break # # 模拟数据处理 # print(waitting_analysis_data) # # def main(): # # 1.创建一个队列 # q=multiprocessing.Queue() # # # 2.创建多个进程,将队列的引用当地到实参进行传递到里面 # # p1=multiprocessing.Process(target=download_from_web,args=(q,)) # p2=multiprocessing.Process(target=analysis_data,args=(q,)) # p1.start() # p2.start() # # if __name__=="__main__": # main() # 进程池:可以容纳很多进程,可以重复利用进程池里的进程 """进程池的创建""" # from multiprocessing import Pool # import os,time,random # # 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----")
    Processed: 0.011, SQL: 8