1

我想使用 NumPy 为 Pyramid 中可调用的视图执行一些数组计算。我使用的数组非常大(3500x3500),所以我想知道加载它的最佳位置是重复使用。

现在我的应用程序是一个页面,我正在使用一个可调用的视图。

阵列将从磁盘加载并且不会更改。

4

2 回答 2

3

如果数组是可以在线程之间共享的,那么您可以在应用程序启动时将其存储在注册表中(config.registry['my_big_array'] = ??)。如果它不能共享,那么我建议使用一个队列系统,它可以始终加载数据,可能在另一个进程中。您可以通过将注册表中的值设置为线程本地来解决此问题,然后在变量中存储一个新数组(如果其中不存在),但是您将拥有每个线程的数组副本,这对于这么大的东西。

于 2012-09-19T15:22:02.637 回答
2

我只是将它加载到代码中明显的地方,你需要使用它(在你看来,我猜?),看看你是否有性能问题。最好使用实际数字而不是试图猜测会出现什么问题。你通常会对现实感到惊讶。

如果您确实看到性能问题,假设您不需要为多个线程中的每一个创建副本,请尝试在导入后将其加载到全局范围内。如果这不起作用,请尝试将其移动到自己的模块中并导入。如果这仍然没有帮助......我不知道那是什么。

于 2012-09-19T15:24:40.657 回答