我正在关注 Prefect 教程,网址为:https : //docs.prefect.io/core/tutorial/01-etl-before-prefect.html。代码可以从git下载:https : //github.com/PrefectHQ/prefect/tree/master/examples/tutorial
这些教程依赖于飞机库,它是教程下的一个目录。我可以通过终端执行流程:
python 02_etl_...
Run Code Online (Sandbox Code Playgroud)
它完美地执行!
我创建了一个项目,并将 Flow 添加到该项目中。通过 Prefect Server UI,我可以运行 Flow,但它失败并显示错误消息:
状态消息:无法加载和执行 Flow 的环境:ModuleNotFoundError("No module named 'aircraftlib'")
在通过 Prefect Server UI 执行 Flows 时,我应该如何处理依赖关系?
我正在测试方法,geodata_collect._request_loc_data()在该方法中我调用了另一个方法,geodata_collect.utils.loadJSON(...)为了对第一个提到的方法进行单元测试,我需要对其进行模拟。
我的问题是,我需要geodata_collect.utils.loadJSON(...)第三次从内部调用返回一个不同的值geodata_collect._request_loc_data()。
我一直在探索MagicMock,side_effect为了做到这一点。
mock = MagicMock()
mock.side_effect = [self._create_request_dict(next_page_token=True),
self._create_request_dict(next_page_token=True), self._create_request_dict()]
with patch('geodata_collect.utils.loadJSON',return_value=mock):
geodata_collect._request_loc_data()
Run Code Online (Sandbox Code Playgroud)
但是,将返回geodata_collect.utils.loadJSON(...)从geodata_collect._request_loc_data()MagicMock类内部调用的when值,而不是实际值。
<MagicMock id='140642209064888'>
Run Code Online (Sandbox Code Playgroud)
应该返回什么:
{'status': 'OK', 'next_page_token': 'Next Page EXISTS!!', 'result': [1, 2, 3, 4, 5]}
{'status': 'OK', 'next_page_token': 'Next Page EXISTS!!', 'result': [1, 2, 3, 4, 5]}
{'status': 'OK', 'result': [1, 2, 3, 4, 5]}
Run Code Online (Sandbox Code Playgroud) 我有两个时间序列A和B。A的长度为mB,B的长度为n。m << n。两者都有尺寸d。
我通过在B上滑动A来计算A与B中所有子序列之间的距离。在python中,代码如下所示。
def sliding_dist(A,B)
n = len(B)
dist = np.zeros(n)
for i in range(n-m):
subrange = B[i:i+m,:]
distance = np.linalg.norm(A-subrange)
dist[i] = distance
return dist
Run Code Online (Sandbox Code Playgroud)
现在,这段代码需要花费很多时间来执行,并且我有很多计算要做。我需要加快计算速度。我的猜测是,我可以使用卷积和频域乘法(FFT)来做到这一点。但是,我无法实现它。
有任何想法吗?:) 谢谢