小编use*_*080的帖子

android测试经常在'实例化测试'停滞

当我单击运行测试按钮时,Android Studio会构建并尝试运行测试.

70%的时间,它说"实例化测试...",从来没有去过任何地方.如果我杀死adb-server,拔掉设备或杀死模拟器,那么测试套件可以正常运行.

那天晚上我甚至看到了一种奇怪的行为.当我说实例化测试时,我拔掉了设备.Android Studio发现它消失了.几个小时后,我把手机从口袋里掏出来,解锁了,不知从哪里开始运行测试套件.

知道什么会导致这种行为吗?我发现最接近的是Android Test在实例化测试中停止,但这指的是另一个问题.

android unit-testing android-studio

28
推荐指数
3
解决办法
2671
查看次数

ESLint 缩进和运算符换行

我们的 ESLint 配置继承自 airbnb 的配置。

尽管启用了缩进规则,但出于某种原因,这是允许的:

let a = some * math
* operators;
Run Code Online (Sandbox Code Playgroud)

尽管我希望它需要以下内容(额外的缩进以强调):

let a = some * math
    * operators;
Run Code Online (Sandbox Code Playgroud)

缩进 linting 在其他地方都按预期工作。

例如,linting 会抱怨这里的缩进:

let c = somefunction(
parm
);
Run Code Online (Sandbox Code Playgroud)

这是 ESLint 中的错误,还是我需要在配置中打开规则?indent 的文档中似乎没有任何内容适用,并且我没有看到任何其他似乎相关的规则。

谢谢!

javascript eslint eslint-config-airbnb

6
推荐指数
0
解决办法
656
查看次数

Python数据类:可以为字段设置默认值吗?

我想创建一个数据类基类,其中子类中的所有字段自动为可选且默认为“无”(如果未提供默认值)。

下面的代码......似乎几乎达到了我想要的效果,但又不完全是。它的错误方式就像我从未编写过一样__init_subclass__(即抱怨未填充的参数)...也许是因为我的代码在数据类魔法发生后运行?

@dataclass(order=True, frozen=True)
class BaseDictKey:
    def __init_subclass__(cls, *args, **kwargs):
        super().__init_subclass__(*args, **kwargs)
        # noinspection PyUnresolvedReferences
        for field in cls.__dataclass_fields__.values():
            field.default = None if field.default is None else field.default
            field.type = typing.Union[field.type, NoneType]

@dataclass(order=True, frozen=True)
class ScoreDictKey(BaseDictKey):
    catalog: str  # magically becomes catalog: Optional[str] = None
    dataset: str = 'foo'  # magically becomes dataset: Optional[str] = 'foo'

Run Code Online (Sandbox Code Playgroud)

(如果您想知道为什么我想要这个,我有另一个使用这些 BaseDictKeys 的基类,它期望子类中的任何和所有字段都是可选的。我想如果我检测到某些内容不是可选的,我可以改为引发异常,但这看起来更丑陋。)

这在 Python 3.7+ 中可能吗?

python python-3.x python-dataclasses

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

使用 numpy/scipy 进行 Python 多处理速度较慢

我有一项处理器非常密集的任务,大约需要 13-20 小时才能完成,具体取决于机器。似乎是通过多处理库进行并行化的明显选择。问题是......我产生的进程越多,相同的代码变得越慢。

每次迭代的时间(即运行sparse.linalg.cg所需的时间):

183s 1 进程

245s 2 进程

312s 3个进程

383s 4个进程

诚然,虽然 2 个进程每次迭代需要多花费 30% 多一点的时间,但它同时执行 2 个进程,因此速度仍然稍快一些。但我不认为实际的数学运算本身会更慢!这些计时器直到多处理增加的开销之后才会启动。

这是我的代码的精简版本。问题行是sparse.linalg.cg 行。(我尝试过使用 MKL 与 OpenBLAS 之类的方法,并强制它们在单个线程中运行。还尝试过手动生成进程而不是使用池。没有运气。)

def do_the_thing_partial(iteration: int, iter_size: float, outQ : multiprocessing.Queue, L: int, D: int, qP: int, elec_ind: np.ndarray, Ic: int, ubi2: int,
                 K : csc_matrix, t: np.ndarray, dip_ind_t: np.ndarray, conds: np.ndarray, hx: float, dstr: np.ndarray):
    range_start = ceil(iteration * iter_size)
    range_end = ceil((iteration + 1) * iter_size)

    for rr in range(range_start, range_end):
        # do some …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy python-3.x python-multiprocessing

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

对于用type()构造的类型,mypy“作为类型无效”

Foo = type('Foo', (), {})
Bar = Optional[Foo]
Run Code Online (Sandbox Code Playgroud)

mypy抱怨 error: Variable "packagename.Foo" is not valid as a type

除了这样做还有其他办法吗

Class Foo:
    pass

Bar = Optional[Foo]
Run Code Online (Sandbox Code Playgroud)

python python-3.x mypy

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