【python】多任务(2. 进程)
2024-10-02 06:06:44
进程间通信 Queue
import multiprocessing
def download_from_web(q):
# 模拟从网上下载数据
data = [11, 22, 33, 44]
for i in data:
q.put(i)
print("---数据下载已写入到队列---")
def analysis_data(q):
waitting_analysis_data = list()
while not q.empty():
waitting_analysis_data.append(q.get())
print(str(waitting_analysis_data) + " <<< 数据拼接完毕")
def main():
# 1. 创建一个队列
q = multiprocessing.Queue(4)
# 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()))
time.sleep(random.random() * 2)
t_stop = time.time()
print(msg, "执行完毕, 耗时%.2f" % (t_stop - t_start))
def main():
po = Pool(3)
for i in range(0,10):
po.apply_async(worker, (i,))
print("---start---")
po.close()
po.join()
print("---sop---")
if __name__ == '__main__':
main()
最新文章
- Java class,Object,Class的区别
- drawable animation
- Bootstrap<;基础十五>; 输入框组
- cf251.2.C (构造题的技巧)
- Bootstrap简介
- locutus(phpjs) 的使用
- spark加载hadoop本地库的时候出现不能加载的情况要怎么解决呢?
- iOS页面传值方式
- IBatis.Net学习笔记六--再谈查询
- UISwitch和UIActivity的使用
- 栈的的链式实例LinkStack实现
- 使用Devexpress中的CharControl控件,需要控制AxisY轴的显示范围,需要使用该控件的BoundDataChanged事件
- javascript 中 事件流和事件冒泡
- Maven中央(或国内)仓库地址
- java程序调用xfire发布的webService服务(二)
- Vue学习笔记一:初识Vue
- Python基础01_介绍_HelloWorld
- php oracle数据库NCOLB字段ORA-01704
- bbs项目富文本编辑器实现上传文件到media目录
- Python3.5 学习十七
热门文章
- 9.consul获取服务实例,调用测试
- Spring Data学习中心
- Web项目中使用Log4net 案例
- vb.net 对字符串中的括号匹配进行判断,容许嵌套
- pytest 学习笔记一 入门篇
- 测试效率加倍提升!shell 高阶命令快来 get 下!
- spring boot 从开发到部署(二)—重启服务
- package.json中dependencies 与devDependencies 的区别
- [转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)
- LPAT: Learning to Predict Adaptive Threshold for Weakly-supervised Temporal Action Localization [Paper Reading]