我想从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) 我在使用 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 相同。
这里有一个基准测试代码来说明我的问题:
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 标准库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) 我已经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) 我习惯于对 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 很陌生,对并行处理也完全陌生。
我一直在编写代码来分析点状图像数据(想想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) 进度条与multiprocessing后端一起使用时效果很好,但在使用distributed调度程序作为后端时似乎根本不起作用。
有没有解决的办法?还是另一种解决方案?该distributed软件包本身有一些进度条,但它们都需要一个期货列表才能工作。