小编Dav*_*man的帖子

在Windows Subsystem for Linux中挂载Windows共享

我想从WSL(Windows Subsystem for Linux)中安装Windows服务器.在Ubuntu(带有统一界面)我可以输入

gvfs-mount smb://domain\;user@server/share
Run Code Online (Sandbox Code Playgroud)

一切都安装得很好.

如果我在WSL中尝试这个,那么我得到以下错误:

Error mounting location: volume doesn't implement mount
Run Code Online (Sandbox Code Playgroud)

linux bash ubuntu mount windows-subsystem-for-linux

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

VSCode pytest 发现不起作用:conda 错误?

我在使用 VSCode 的 python 测试功能时遇到了一个奇怪的问题。当我尝试发现测试时,出现以下错误:

> conda run -n sandbox --no-capture-output python ~/.vscode/extensions/ms-python.python-2022.0.1786462952/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.0.1786462952/pythonFiles/testing_tools/run_adapter.py discover pytest -- --rootdir . -s --cache-clear .
cwd: .
[ERROR 2022-1-3 21:49:47.851]: Error discovering pytest tests:
 [r [Error]: 
EnvironmentLocationNotFound: Not a conda environment: /Users/david.hoffman/miniconda3/envs/sandbox/envs/sandbox
Run Code Online (Sandbox Code Playgroud)

但显然存在重复错误:/Users/david.hoffman/miniconda3/envs/sandbox/envs/sandbox

如果我直接在终端中运行此命令,我会得到预期的输出并且没有错误:

conda run -n sandbox --no-capture-output python ~/.vscode/extensions/ms-python.python-2022.0.1786462952/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.0.1786462952/pythonFiles/testing_tools/run_adapter.py discover pytest -- --rootdir . -s --cache-clear
Run Code Online (Sandbox Code Playgroud)

我完全被难住了,因为似乎没有任何设置会影响这一点。

我尝试从头开始重新安装 VSCode(删除所有本地文件后),与 conda 相同。

python conda visual-studio-code

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

为什么multiprocessing.sharedctypes赋值如此之慢?

这里有一个基准测试代码来说明我的问题:

import numpy as np
import multiprocessing as mp
# allocate memory
%time temp = mp.RawArray(np.ctypeslib.ctypes.c_uint16, int(1e8))
Wall time: 46.8 ms
# assign memory, very slow
%time temp[:] = np.arange(1e8, dtype = np.uint16)
Wall time: 10.3 s
# equivalent numpy assignment, 100X faster
%time a = np.arange(1e8, dtype = np.uint16)
Wall time: 111 ms
Run Code Online (Sandbox Code Playgroud)

基本上我想要在多个进程之间共享一个numpy数组,因为它很大且只读.这种方法效果很好,不需要额外的副本,并且过程的实际计算时间也很好.但是创建共享阵列的开销是巨大的.

这篇文章提供了一些很好的见解,为什么某些初始化数组的方法很慢(请注意,在上面的例子中,我使用的是更快的方法).但这篇文章并没有真正描述如何真正提高速度,使其像性能一样难以捉摸.

有没有人对如何提高速度有任何建议?一些cython代码是否有意义分配数组?

我正在使用Windows 7 x64系统.

python shared-memory multiprocessing

7
推荐指数
2
解决办法
1997
查看次数

标准库日志记录加上 loguru

假设我正在设置一个脚本或库,它有一些使用 Python 标准库logging模块的依赖项,但我想用它loguru来捕获所有日志。我的第一次天真的尝试完全失败了,但我不知道如何继续。

为了测试我有两个文件

main.py:

from loguru import logger

from base_log import test_func

if __name__ == "__main__":
    logger.debug("In main")
    test_func()
Run Code Online (Sandbox Code Playgroud)

base_log.py

import logging

logger = logging.getLogger(__name__)


def test_func():
    logger.warning("In test_func")
Run Code Online (Sandbox Code Playgroud)

如果我运行main.py(ie python main.py) 那么我会得到以下输出:

2020-12-16 10:57:48.269 | DEBUG    | __main__:<module>:6 - In main
In test_func
Run Code Online (Sandbox Code Playgroud)

当我期望时:

2020-12-16 11:01:34.408 | DEBUG    | __main__:<module>:6 - In main
2020-12-16 11:01:34.408 | WARNING  | base_log:test_func:9 - In test_func
Run Code Online (Sandbox Code Playgroud)

python logging

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

Dask分布式诊断网页无法正常工作

我已经dask在我的集群上运行,但我似乎无法访问诊断网页.着陆页可见,如下所示:

在此输入图像描述

但是所有链接都挂起并且从不加载页面.

调度程序在此输出时正常启动:

[hoffmand@h05u06 ~]$ dask-scheduler --scheduler-file dask-scheduler.json
distributed.scheduler - INFO - -----------------------------------------------
distributed.scheduler - INFO -   Scheduler at:   tcp://10.36.105.16:8786
distributed.scheduler - INFO -       bokeh at:              0.0.0.0:8788
distributed.scheduler - INFO -        http at:              0.0.0.0:9786
distributed.bokeh.application - INFO - Web UI: http://127.0.0.1:8787/status/
distributed.scheduler - INFO - -----------------------------------------------
distributed.scheduler - INFO - Register tcp://10.36.107.15:37780
distributed.scheduler - INFO - Starting worker compute stream, tcp://10.36.107.15:37780
Run Code Online (Sandbox Code Playgroud)

python parallel-processing distributed-computing dask

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

dask DataFrame 中的复杂过滤

我习惯于对 Pandas DataFrame 对象进行“复杂”过滤:

import numpy as np
import pandas as pd
data = pd.DataFrame(np.random.random((10000, 2)) * 512, columns=["x", "y"])
data2 = data[np.sqrt((data.x - 200)**2 + (data.y - 200)**2) < 1]
Run Code Online (Sandbox Code Playgroud)

这不会产生任何问题。

但是使用 dask DataFrames 我有:

ddata = dask.dataframe.from_pandas(data, 8)
ddata2 = ddata[np.sqrt((ddata.x - 200)**2 + (ddata.y - 200)**2) < 1]
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-13-c2acf73dddf6> in <module>()
----> 1 ddata2 = ddata[np.sqrt((ddata.x - 200)**2 + (ddata.y - 200)**2) < 1]

~/anaconda3/lib/python3.6/site-packages/dask/dataframe/core.py in __getitem__(self, key)
   2115             return …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas dask

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

在 Python 3.4 中使用多处理时出现断言错误

我对 Python 很陌生,对并行处理也完全陌生。

我一直在编写代码来分析点状图像数据(想想PALM lite),并尝试使用该模块加速我的分析代码multiprocessing

对于小数据集,我发现最多四个核心的加速效果相当不错。对于大型数据集,我开始收到断言错误。我尝试制作一个产生相同错误的简化示例,请参见下文:

import numpy as np
import multiprocessing as mp
import os

class TestClass(object):
    def __init__(self, data):
        super().__init__()
        self.data = data

    def top_level_function(self, nproc = 1):

        if nproc > os.cpu_count():
            nproc = os.cpu_count()

        if nproc == 1:
            sums = [self._sub_function() for i in range(10)]
        elif 1 < nproc:
            print('multiprocessing engaged with {} cores'.format(nproc))
            with mp.Pool(nproc) as p:
                sums = [p.apply_async(self._sub_function) for i in range(10)]
                sums = [pp.get() for pp in sums]

        self.sums = …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing multiprocessing

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

Dask ProgressBar 不适用于分布式后端

进度条与multiprocessing后端一起使用时效果很好,但在使用distributed调度程序作为后端时似乎根本不起作用。

有没有解决的办法?还是另一种解决方案?该distributed软件包本身有一些进度条,但它们都需要一个期货列表才能工作。

python distributed progress-bar dask

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