当前位置: 首页 > 面试题库 >

python generator:并行解压整个发电机

雍兴修
2023-03-14
问题内容

假设我有一个生成器,其__next__()功能有些昂贵,我想尝试并行化调用。我应该在哪里抛出并行化?

为了更具体一点,请考虑以下示例:

# fast, splitting a file for example
raw_blocks = (b for b in block_generator(fin))
# slow, reading blocks, checking values ...
parsed_blocks = (block_parser(b) for b in raw_blocks)
# get all parsed blocks into a data structure
data = parsedBlocksToOrderedDict(parsed_blocks)

最基本的是将第二行更改为进行并行化的内容。是否有一些生成器魔咒可以使发电机(在第3条)线上并行打开包装?__next__()并行呼叫?


问题答案:

不能。您必须next()顺序调用,因为任何非平凡的生成器的下一个状态都由其当前状态决定。

def gen(num):
    j=0
    for i in xrange(num):
        j += i
        yield j

如果不知道在每个生成器产生值的状态,就无法并行化对上述生成器的调用。但是,如果您知道这一点,则无需运行它。



 类似资料:
  • tar [-]c|x|u|r|t[z|j][v] -f 归档文件 [待打包文件] 将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为 tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时) 操作选项 -c 创建 -x 解包 -u 更新 -r 添加 -t 查看 -d 比较压缩包内文件和文件 -A 将 tar 文件添加到归档文件中 格式选项 -z 使用 gz 压缩格式 -j 使

  • 我正在模拟一个银行系统,其中我有10万个交易要运行。每种类型的事务实现runnable,我有各种类型的事务可以发生。 是一个运行库数组。 理想情况下,下面的代码可以解决我的问题: 每次运行此事务时,只有一个帐户被锁定,剩下9个帐户可供处理。为什么JVM不再处理任何线程,而是挂起直到这个长事务完成? 下面是一个指向该项目的简化版本的链接,以演示该问题:project

  • 并发(Concurrently)和并行(Parallel)是两个不同的概念。借用Go创始人Rob Pike的说法,并发不是并行,并发更好。并发是一共要处理(deal with)很多事情,并行是一次可以做(do)多少事情。 举个简单的例子,华罗庚泡茶,必须有烧水、洗杯子、拿茶叶等步骤。现在我们想尽快做完这件事,也就是“一共要处理很多事情”,有很多方法可以实现并发,例如请多个人同时做,这就是并行。并行

  • 问题内容: 我正在尝试编写一个函数,该函数接受带压缩文件的数据,并返回另一个带解压缩数据的数据。 压缩文件将只包含一个文件,因此不需要创建目录等。 我试着看了看其他人,但是我对Java中这么多不同类型的流感到困惑。 问题答案: 概念 GZIPInputStream用于压缩为gzip(扩展名为“ .gz”)的流(或文件)。它没有任何标题信息。 此类实现流过滤器,以读取GZIP文件格式的压缩数据 如果

  • 在 Go语言程序运行时(runtime)实现了一个小型的任务调度器。这套调度器的工作原理类似于操作系统调度线程,Go 程序调度器可以高效地将 CPU 资源分配给每一个任务。传统逻辑中,开发者需要维护线程池中线程与 CPU 核心数量的对应关系。同样的,Go 地中也可以通过 runtime.GOMAXPROCS() 函数做到,格式为: runtime.GOMAXPROCS(逻辑CPU数量) 这里的逻辑

  • 9.3.1 串行、并发与并行 计算机执行程序时,如果采用按顺序执行的方式,即仅当一个程序执行完毕,下一个程序才能开始执行,则称为串行(serial)执行。在串行执行方式下,CPU 每次由一个程序独 占使用,只要当前程序还没有结束,下一个程序就不能使用 CPU。这就像排队买东西,营 业员(即 CPU)每次只为一个顾客服务,等前面的顾客走了,后面的顾客才能获得服务。 串行执行方式有一个缺点,即 CPU

  • 因此,目前我的用户下载一个zipfile,解压缩它,然后运行安装程序。exe-我希望他们只需单击一下即可完成此操作。使用http://www.wikihow.com/Use-7Zip-to-Create-Self-Extracting-excutables我可以制作一个自解压exe,但它实际上并不运行安装程序。 从这个问题 为什么7zip在制作SFX安装程序时会忽略我的InstallPath? 看

  • 我有两个问题。其中一个会把话题弄得乱七八糟:) 1)我遇到了一个问题,即无法找到关于不同垃圾收集器在Hotspot中如何工作的完整信息。但我不是在谈论垃圾收集器工作的一般描述(我们在互联网上有很多这样的信息),我是在谈论具体的算法。我找到了这本白皮书(Java HotSpot虚拟机中的内存管理)http://www.oracle.com/technetwork/Java/javase/tech/m