小编Ale*_*are的帖子

joblib.Parallel 如何处理全局变量?

我的代码看起来像这样:

from joblib import Parallel, delayed

# prediction model - 10s of megabytes on disk
LARGE_MODEL = load_model('path/to/model')

file_paths = glob('path/to/files/*')

def do_thing(file_path):
  pred = LARGE_MODEL.predict(load_image(file_path))
  return pred

Parallel(n_jobs=2)(delayed(do_thing)(fp) for fp in file_paths)
Run Code Online (Sandbox Code Playgroud)

我的问题是是否LARGE_MODEL会在循环的每次迭代中进行腌制/取消腌制。如果是这样,我如何确保每个工作人员都缓存它(如果可能的话)?

python parallel-processing joblib

6
推荐指数
1
解决办法
172
查看次数

如何从故事板中获取UIViewControl对象的nib名称

我试图在UIViewControl类中的属性中定义变量.该变量是另一个名为ViewControl的UIViewControl类的引用.

var handle = ViewControl(nibName: "insert_viewcontroller_id_here", bundle: nil")
Run Code Online (Sandbox Code Playgroud)

我如何获得nibName?什么是nib名称,为什么在视图控件已经有UIViewControl类名时需要引用它?

最好,亚历克斯.

uiviewcontroller nib ios swift

5
推荐指数
1
解决办法
5877
查看次数

什么是 `np.ndarray[Any, np.dtype[np.float64]]` 以及为什么 `np.typing.NDArray[np.float64]` 为它起别名?

的文档称它是“np.typing.NDArray通用版本np.ndarray[Any, np.dtype[+ScalarType]]”。“通用”的概括发生在哪里?

文档中,numpy.ndarray.__class_getitem__我们有这个示例np.ndarray[Any, np.dtype[Any]],但没有解释这两个参数是什么。

为什么我可以这样做np.ndarray[float],即只使用一个参数?这意味着什么?

python numpy typing

5
推荐指数
1
解决办法
1387
查看次数

Javascript:如何传递带有预期参数的回调

我想在2秒后将选择的字符串打印到控制台。

'Hello'2秒后将打印到控制台:

function log() {
  console.log("Hello")
}

t = setTimeout(log, 2000)
Run Code Online (Sandbox Code Playgroud)

但是我没有选择打印哪个字符串。它被硬编码在函数中。

接下来的代码确实会打印'myChoice'到控制台,但会立即执行,而不是等待2秒钟:

function log(st) {
  console.log(st)
}

t = setTimeout(log("myChoice"),2000)
Run Code Online (Sandbox Code Playgroud)

据我了解,这是因为setTimeout希望我为其提供函数。

如何将log函数提供给setTimeout并告诉它在运行时希望它使用我提供的任何字符串?

笔记

  • 我实际上不关心2秒钟后的日志记录。这是一个原型问题,适用于我的一般性问题,即如何告诉javascript我希望函数在调用时使用哪些参数。
  • 奖励问题:如何更好地表达我的问题标题?“ callback”在这里是否正确?

编辑:有些人将此标记为重复,并且实际上问题标题与另一个主题几乎相同。但是,另一个问题的主体似乎已经将所有答案锚定为解决问题的特定方式,即使用中间函数。我认为我得到的答案是给出该问题标题的最佳答案。

javascript

4
推荐指数
1
解决办法
48
查看次数

如何在 Markdown 方程中编写案例

我怎样才能在markdown中写出这样的东西?

在此输入图像描述

以下是我不知道该怎么做的具体事情:

  • 带有两行的大花括号
  • 如果我知道上面之后需要的话,两行内的制表符分隔

如果我知道正确的语法,我会这样做:

$$
CE(p, y) = \curlytwo{-\log(p) \tab \text{if }y=1}{-\log(1-p) \tab \text{otherwise.}}
$$
Run Code Online (Sandbox Code Playgroud)

我发明的地方\curlytwo\tab.

markdown mathjax

4
推荐指数
1
解决办法
5930
查看次数

如何在类中使用多处理管理器

首先,这是一些有效的代码

from multiprocessing import Pool, Manager
import random

manager = Manager()
dct = manager.dict()

def do_thing(n):
    for i in range(10_000_000):
        i += 1
    dct[n] = random.randint(0, 9)

with Pool(2) as pool:
    pool.map(do_thing, range(10))
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试用它来创建一个类:

from multiprocessing import Pool, Manager
import random


class SomeClass:
    def __init__(self):
        self.manager = Manager()
        self.dct = self.manager.dict()

    def __call__(self):
        with Pool(2) as pool:
            pool.map(self.do_thing, range(10))

    def do_thing(self, n):
        for i in range(10_000_000):
            i += 1
        self.dct[n] = random.randint(0, 9)


if __name__ == '__main__':
    inst = SomeClass() …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing

4
推荐指数
1
解决办法
1757
查看次数

Tensorflow 重复成功消息和 NUMA 节点读取警告

我刚刚通过运行文件安装了 cuda 11.2,并通过pip install tensorflowUbuntu 20.04 和 Python 3.8 安装了tensorflow。创建张量时,我得到了奇怪的读数,并且 RTX 3090 上的内存使用率达到了 95%

Python 3.8.5 (default, May 27 2021, 13:30:53) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
2021-06-25 10:42:08.881025: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0
>>> a = tf.zeros(1)
2021-06-25 10:42:16.739723: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcuda.so.1
2021-06-25 10:42:16.775681: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:937] successful NUMA node read from SysFS had negative value (-1), but there must …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

4
推荐指数
1
解决办法
6650
查看次数

当默认值为空时如何输入提示可调用元组

我这样提示:

some_kwarg: Tuple[Callable] = ()
Run Code Online (Sandbox Code Playgroud)

但 mypy 提高

error: Incompatible default for argument "some_kwarg" (default has type "Tuple[]", argument has type "Tuple[Callable[..., Any]]")
Run Code Online (Sandbox Code Playgroud)

我不想在默认 kwarg 中放置一个虚拟可调用对象,那么正确的做法是什么?

python mypy

4
推荐指数
1
解决办法
1136
查看次数

Python - 如果用户试图在中途停止执行,有没有办法优雅地清理函数?

说我有一个类

class Thing():

    def __init__(self):
        self.some_state = False

    def do_stuff(self):
        self.some_state = True
        # do stuff which may take some time - and user may quit here
        self.some_state = False

    def do_other_stuff(self):
        # do stuff which depends on `some_state` being False

Run Code Online (Sandbox Code Playgroud)

我想确保用户是否通过运行以下命令在笔记本中执行此操作:

thing = Thing()
thing.do_stuff()
Run Code Online (Sandbox Code Playgroud)

然后在运行时按“停止执行”,some_state切换回False. 这种方式do_other_stuff将按预期工作。有没有办法做一些优雅的清理?

注意:虽然我的例子很具体,但我的问题通常是:“我可以进行优雅的清理吗?”

python

3
推荐指数
1
解决办法
135
查看次数

我可以在 OpenCV 中为 Otsu 阈值添加偏差吗?

这是我的例子。左到右:

  1. 原图
  2. 灰度 + (3,3) 高斯模糊
  3. 大津阈值+反转像素

在此处输入图片说明

我想捕捉更多笔触的微弱部分。我知道 Otsu Thresholding 试图在像素强度直方图的两个峰值之间应用阈值点,但我想稍微偏置一下,以便我可以捕获一些较亮的像素。

可以开箱即用吗?还是我需要做一些手动?

python opencv image-thresholding

2
推荐指数
1
解决办法
664
查看次数

如何使用 OpenCV 扩大二值图像而不关闭孔洞

如何在不关闭循环中的孔的情况下对左侧的二值图像应用膨胀?我也有兴趣有效地做到这一点。

在此输入图像描述

背景:我需要训练 CNN 来读取手写数字。不管你相信与否,左边的图像应该是 9。由于数据集有很多这样写的 9,我可能有机会训练模型来识别它。不过,我确实需要应用一些扩张,以使数字厚度与输入预训练模型的数字厚度相似。我想如果我失去了循环中的洞,我就没有机会了。

python opencv

2
推荐指数
1
解决办法
908
查看次数

是否有一个 Python 容器,其作用类似于字典,但不需要键和值?

假设我有:

@dataclass
class Foo:
  foo_id: int
  # Other interesting fields.

  def __hash__(self):
    return self.foo_id.__hash__()
Run Code Online (Sandbox Code Playgroud)

我做了一个foos_set = {Foo(i) for i in range(10)}. 我一直假设set.remove使用哈希进行恒定时间查找。所以我认为这种想法应该foos_set.remove(6)有效是合理的。但实际上,它引发了一个KeyError. 你需要这样做foo_set.remove(Foo(6))。事实上,如果有更多字段,您需要确保所有字段都匹配!

我想对我来说正确的做法就是制作一个foos_dict = {i: Foo(i) for i in range(10)}. 我很乐意这样做,但它只是感觉不必要的笨重,所以我在这里询问是否还有另一个我不知道的容器。

python

1
推荐指数
1
解决办法
59
查看次数

在为类配备“operator<<”时如何不使用友元声明

我知道我们想做这样的事情来覆盖operator<<

#include <iostream>

class Point
{
private:
    double m_x{};
    double m_y{};
    double m_z{};

public:
    Point(double x=0.0, double y=0.0, double z=0.0)
      : m_x{x}, m_y{y}, m_z{z}
    {
    }

    friend std::ostream& operator<< (std::ostream& out, const Point& point);
};

std::ostream& operator<< (std::ostream& out, const Point& point)
{
    // Since operator<< is a friend of the Point class, we can access Point's members directly.
    out << "Point(" << point.m_x << ", " << point.m_y << ", " << point.m_z << ')'; // actual output …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
60
查看次数