首页
科技
登录
6mi
u
盘
搜
搜 索
科技
python就业班---进程
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----")
转载请注明原文地址:https://blackberry.8miu.com/read-8794.html
最新回复
(
0
)