Jupyter notebook Jupyter笔记本-未使用Numba和Dask定义全局名称
当我试图在一大组图像上并行化一个缓慢的函数时,我遇到了一个错误,我无法找到关于它的任何信息。只有在Jupyter笔记本上运行代码时,才会出现此错误。在一个python文件中,有另一个错误,我在这个主题中找到了一个修复方法 代码片段如下所示: cell1Jupyter notebook Jupyter笔记本-未使用Numba和Dask定义全局名称,jupyter-notebook,dask,numba,Jupyter Notebook,Dask,Numba,当我试图在一大组图像上并行化一个缓慢的函数时,我遇到了一个错误,我无法找到关于它的任何信息。只有在Jupyter笔记本上运行代码时,才会出现此错误。在一个python文件中,有另一个错误,我在这个主题中找到了一个修复方法 代码片段如下所示: cell1 import numba import numpy as np import pandas as pd import time import dask.dataframe as dd from dask.multiprocessing impo
import numba
import numpy as np
import pandas as pd
import time
import dask.dataframe as dd
from dask.multiprocessing import get
from multiprocessing import cpu_count
cell2
def f1(x):
return x + 1
@numba.jit
def f2(x):
x1 = f1(x)
time.sleep(0.05)
return x1, x
@numba.jit
def f3(x):
a, b = f2(x)
time.sleep(0.1)
return a + b
def f4(x, y):
return f3(x) + y
cell3
nCores = 4 #cpu_count()
df = pd.DataFrame(np.random.randint(0, 100 , size=(100, 2)), columns=["A", "B"])
res = dd.from_pandas(df, npartitions=nCores).\
map_partitions(
lambda df_ : df_.apply(
lambda x : f4(x.A, x.B), axis=1)).\
compute(get=get)
print(res)
要在python脚本上运行此代码,如果需要,请在单元格3的内容之前运行著名的if\uuuu name\uuuu==“\uuuuu main\uuu”:
但这在笔记本上不起作用。返回的错误为:
NameError:(“未定义全局名称‘f2’,‘发生在索引50’)
这些是我做过的一些试验:
- 如果我删除
,它就会工作@numba.jit
- 如果我使用标准的pandas apply和
一起使用,它会工作@numba.jit
- 如果两者都存在,它将失败
Nicolas建议您使用dask.distributed而不是多处理。建议您使用dask.distributed而不是多处理。