基于multiprocessing.shared_memory.SharedMemory的备注/缓存装饰器

问题描述

我使用的执行器对酸洗功能进行了回复,并且使用了<?php if(get_field('to-do')): ?> <tbody> <tr> <th style="font-family:Arial,sans-serif;text-align: left; vertical-align: middle; padding: 0 0 20px 0; font-size: 14px">Tarefa</th> <th style="font-family:Arial,sans-serif;text-align: left; vertical-align: middle; padding: 0 0 20px 0; font-size: 14px">Deadline</th> <th style="font-family:Arial,sans-serif;text-align: left; vertical-align: middle; padding: 0 0 20px 0; font-size: 14px">Status</th> </tr> <?php while(has_sub_field('to-do')): ?> <tr style="border-top: 1px solid rgba(0,0.05)"> <td class="timeline-phase-activity ng-scope" style="text-align: left;vertical-align:middle;font-size:14px;width:60%;font-family:Arial,sans-serif;padding:10px 30px 10px 0"><span><?php the_sub_field('task-name'); ?></span></td> <td style="vertical-align:middle;text-align:left;padding-left: 24px;font-size:14px;font-family:Arial,sans-serif;padding:10px 0"> <span style="padding-right:1.125rem"><?php the_sub_field('deadline'); ?></span> </td> <td style="text-align:left;vertical-align:middle;font-size:14px;font-family:Arial,sans-serif;;padding:10px 0"><span><?php the_sub_field('status'); ?></span> </td> </tr> <?php endwhile; ?> </tbody> <?php endif; ?>

在我executor.submit的函数中,我总是使用相同的参数调用函数,因此我想对其进行缓存。我在以下代码中对此进行了演示:

submit

缓存在这里不起作用,因为执行程序每次收到带有空缓存的腌制函数。

解决此问题的一种方法是使用基于磁盘的缓存(例如使用import time def memoize(f): memo = {} def helper(x): if x not in memo: memo[x] = f(x) return memo[x] return helper @memoize # @functools.lru_cache will give the same problem! def g(y): time.sleep(2) def f(x): g(1) return x # I am using `loky` here,but `dask` and `ipyparallel` give the same behaviour. # Note that using `concurrent.futures.ProcessPoolExecutor` won't # have this problem because it forks the entire process! import loky with loky.reusable_executor.get_reusable_executor(max_workers=1) as ex: t = time.time() ex.submit(f,10).result() print(time.time() - t) # <----- prints 2s # Now I run again and want to use the cache,however... t = time.time() ex.submit(f,10).result() print(time.time() - t) # <----- prints 2s joblib.Memory,但是,我想创建一个使用基于内存的解决方案的装饰器,特别是,是新引入的(在Python 3.8中)diskcache)。不幸的是,我无法弄清楚如何将multiprocessing.shared_memory.SharedMemory对象指向任意Python对象。

我想像字典一样使用它,例如( 此尝试无效 ):

SharedMemory

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...