10亿个数字,内存限制100M,进行排序

2023-11-15

解题思路

分治法:拆分小文件,先对每个小文件进行排序,然后使用小顶堆或大顶堆合并文件

代码(python3)

import threading
from queue import Queue
import time
import random

def make_test_data(data_file, number):
    with open(data_file, 'w') as f:
        for i in range(number):    # 生成number个随机数
            f.write(str(random.randint(1, 10000)) + '\n') # 生成1-10000之间的随机值

# 读数据的线程
class Reader(threading.Thread):
    def __init__(self, task_queue, filename, split_nums):
        super(Reader, self).__init__()
        self.task_queue = task_queue
        self.f = open(filename, 'r')
        self.split_nums = split_nums

    def run(self):
        print('reader start')
        data = []
        for line in self.f:
            data.append(int(line.strip()))
            if len(data) == self.split_nums:   # 读取split_nums个数字
                self.task_queue.put(data)    # 放入队列
                data = []
        print('reader end')
        self.f.close()

# 排序的线程
class Sorter(threading.Thread):
    def __init__(self, task_queue, sorted_queue, reader):
        super(Sorter, self).__init__()
        self.task_queue = task_queue
        self.sorted_queue = sorted_queue
        self.reader = reader

    def run(self):
        print('writer start')
        while True:
            if (self.task_queue.empty() and 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10亿个数字,内存限制100M,进行排序 的相关文章

  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 如何在 Ubuntu 上安装 Python 模块

    我刚刚用Python写了一个函数 然后 我想将其做成模块并安装在我的 Ubuntu 11 04 上 这就是我所做的 创建 setup py 和 function py 文件 使用 Python2 7 setup py sdist 构建分发文
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • 如何为多组精灵创建随机位置?

    我尝试使用 blit 和 draw 方法进行 for 循环 并为 PlayerSprite 和 Treegroup 使用不同的变量 for PlayerSprite in Treegroup surface blit PlayerSprit
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • Python unicode 字符代码?

    有没有办法将 Unicode 字符 插入 Python 3 中的字符串 例如 gt gt gt import unicode gt gt gt string This is a full block s unicode charcode U
  • 字典的嵌套列表

    我正在尝试创建dict通过嵌套list groups Group1 A B Group2 C D L y x 0 for y in x if y x 0 for x in groups d k v for d in L for k v in
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 使用 python 将文本发送到带有逗号分隔符的列

    如何使用分隔符 在 Excel 中将一列分成两列 并使用 python 命名标题 这是我的代码 import openpyxl w openpyxl load workbook DDdata xlsx active w active a a
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • WindowsError:[错误 5] 访问被拒绝

    我一直在尝试终止一个进程 但我的所有选项都给出了 Windows 访问被拒绝错误 我通过以下方式打开进程 一个python脚本 test subprocess Popen sys executable testsc py 我想杀死那个进程
  • 使用 lambda 函数更改属性值

    我可以使用 lambda 函数循环遍历类对象列表并更改属性值 对于所有对象或满足特定条件的对象 吗 class Student object def init self name age self name name self age ag
  • 是否可以写一个负的python类型注释

    这可能听起来不合理 但现在我需要否定类型注释 我的意思是这样的 an int Not Iterable a string Iterable 这是因为我为一个函数编写了一个重载 而 mypy 不理解我 我的功能看起来像这样 overload
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有

随机推荐

  • XSS-Game 通关教程,XSS-Game level1-18,XSS靶场通关教程

    作者主页 士别三日wyx 作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 专栏简介 此文章已录入专栏 靶场通关教程 XSS Game XSS Game level1 XSS Game level2 X
  • 国内好用的CRM框架推荐和介绍

    一 如何选择CRM管理系统的方法 选择适合自己的CRM管理系统是企业客户关系管理的重要决策之一 需要根据自身的需求和实际情况进行选择 下面介绍几个选择比较好的CRM管理系统的方法 1 确定功能需求 企业需要根据自身的业务特点和管理需求 确定
  • maven高级-黑马-笔记

    目录 1 分模块开发 2 依赖管理 依赖冲突 可选依赖和排除依赖 3 聚合和继承 聚合 继承 3 属性 属性 4 多环境配置与应用 多环境开发 跳过测试 5 私服 1 分模块开发 1 创建Maven模块 2 书写模块代码 分模块开发需要先针
  • VS Code插件汇总

    插件 Basic Chinese Simplified Language Pack C C C C CMake Tools C C Extension Pack Web Open in browser Microsoft Edge Tool
  • 华为OD题目: 货币单位换算

    package com sf ccmas video config odd od12 import java util 货币单位换算 时间限制 1s空间限制 256MB 限定语言 不限 题目描述 记账本上记录了若干条多国货币金额 需要转换成
  • 【通信原理】信道编码——线性分组码

    线性分组码 线性分组码 有两个特点 一个是线性 一个是分组 线性是指校验位和数据位成线性关系 可以通过线性方程直接求得 分组是指校验位由当前码组的数据位唯一确定 比如 n k 线性分组码 指码长为n 数据位为k的编码方案 汉明码是线性分组码
  • 制作自己的数据集

    目录 自制数据集 解决本领域应用 编辑 编辑 数据增强 扩充数据集 断点续训 存取模型 编辑参数提取 把参数存入文本 acc loss可视化 查看训练效果 编写一个应用程序 神经网络接口 给图识物 当你有了本领域的数据集 又有了标签 你怎么
  • cron计划任务每隔30秒执行一次

  • 【Inno Setup】判别系统版本

    Code function IsXP32 Boolean var Version TWindowsVersion S String begin GetWindowsVersionEx Version S 主版本号 IntToStr Vers
  • python文本进度条练习之不同速度进度条

    这属于一个小小的课后练习 但我在网上没有找到对应代码 我主要是在textprobarv3 py上做修改 我选择的是power设计 f x pow x 1 x 0 03 2 主要增加了一行 fx int pow i 1 i 0 03 2 修改
  • 线程池 vs 信号量的优缺点比较

    通常我们都采用基于线程池的实现方式 这也是最容易理解的方案 Hystrix还提供了另一种底层实现 那就是信号量隔离 小时候我们就知道 红灯停 绿灯行 跟着交通信号的指示过马路 信号量也是这么一种放行 禁行的开关作用 它和线程池技术一样 控制
  • 目标检测识别中,mAP,AP,P值的定义与计算

    mAP是衡量模型在所有类别上的准确率 是衡量模型的好坏的评价指标 mAP 所有类别的AP之和 类别数 AP是某一个类别的准确率 AP 每张图片的P之和 图片数量 P 一张图片上某一类别识别的正确数量 一张图片上某一类别的总数量 比如现在有三
  • drwxr-x-w-. 4 507 509 4.0K 9月 4 2018 wukong linux中 507和509 是什么回事?

    第一个数字507出现原因 表示该目录的所有者 不存在了 第二个数字509出现原因 表示该目录的所有者所在的组 不存在了
  • 【办公类-19-03】办公中的思考——Python批量制作word单元格照片和文字(小照片系列)

    背景需求 工会老师求助 如何在word里面插入4 8的框 我怎么也拉不到4 8大小 她用的是我WORD 文本框 我一听 这又是要手动反复黏贴 文本框 照片 文字 的节奏哦 我问 你要做几个人 超过20个 我写个程序批量插图 写代码测试要费时
  • 5.2lua setfenv

    local FuncEnv setmetatable FuncEnv index G local func loadfile a lua local func loadfile a lua nil FuncEnv local ENV Fun
  • 二分查找法

    二分查找法 1 基础二分查找 2 改进二分查找 3 平衡版二分查找法 4 查找目标值最左索引 5 查找目标值最右索引 6 查找大于等于目标值的最左索引 7 查找小于等于目标的最右索引值 1 基础二分查找 二分查找法 基础 public st
  • mysql系统错误216_MySQL异常 - Skqing - OSCHINA - 中文开源技术交流社区

    jdbc mysql localhost 3306 ry useUnicode true characterEncoding utf8 zeroDateTimeBehavior convertToNull useSSL true Druid
  • 【扫盲】机器学习图像处理中的深层/浅层、局部/全局特征

    浅层网络与深层网络浅层网络更注重于细节信息 深层网络更注重于语义信息 浅层网络 一般感受野较小 能够利用更多的细粒度特征信息 而且此时特征图每个像素点对应的感受野重叠区域还很小 这就保证了网络能够捕获更多细节 深层网络 随着下采样或卷积次数
  • 常见黑客渗透测试工具

    因为上面要转了一篇 里面好多我都觉得过时了 不过确实好多我也还在用 哈哈 留个备份吧 免得上面又要找我要 一 Nessus 是扫描UNIX漏洞的主力工具 随后栖身Windows 主要功能包括本地和远程安全审查 支持client server
  • 10亿个数字,内存限制100M,进行排序

    解题思路 分治法 拆分小文件 先对每个小文件进行排序 然后使用小顶堆或大顶堆合并文件 代码 python3 import threading from queue import Queue import time import random