小编Ada*_*ein的帖子

在Scala 2.10中,如何在给定TypeTag的情况下创建ClassTag

我想定义一个返回数组的函数,我有一个TypeTag.我可以生成所需的ClassTag吗?

scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._

scala> def fun[X: TypeTag]: Array[X] = Array.ofDim[X](10)
<console>:11: error: No ClassTag available for X
       def fun[X: TypeTag]: Array[X] = Array.ofDim[X](10)
Run Code Online (Sandbox Code Playgroud)

或者是否有必要提供ClassTag的隐含证据:

scala> import reflect.ClassTag
import reflect.ClassTag

scala> def fun[X: ClassTag: TypeTag]: Array[X] = Array.ofDim[X](10)(implicitly[ClassTag[X]])
fun: [X](implicit evidence$1: scala.reflect.ClassTag[X], implicit evidence$2: reflect.runtime.universe.TypeTag[X])Array[X]
Run Code Online (Sandbox Code Playgroud)

我认为从TypeTag生成ClassTag很简单,但我没有看到明显的方法.

scala scala-2.10

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

F#比较与C#IComparable

简而言之,我的问题是:

关于在需要IComparable的C#容器中存储元组(或任何具有'比较'约束的类型),我该怎么办

这有效:

> let x (y : 'a when 'a : comparison) = y ;;
val x : y:'a -> 'a when 'a : comparison

> x (1,2) ;;
val it : int * int = (1, 2)
Run Code Online (Sandbox Code Playgroud)

我原以为这会起作用:

> let x (y : IComparable<int>) = y ;;

val x : y:IComparable<int> -> IComparable<int>

> x (1,2) ;;

  x (1,2) ;;
  ---^^^

stdin(28,4): error FS0001: The type ''a * 'b' is not compatible with the type 'IComparable<int>'
Run Code Online (Sandbox Code Playgroud)

这也是: …

comparison f# icomparable

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

Dask 图执行和内存使用

我正在 dask 中构建一个非常大的 DAG 以提交给分布式调度程序,其中节点对本身可能非常大的数据帧进行操作。一种模式是我有大约 50-60 个函数来加载数据并构建每个数百 MB 的 Pandas 数据帧(并且在逻辑上代表单个表的分区)。我想将这些连接到图中下游节点的单个 dask 数据帧中,同时最小化数据移动。我将任务链接如下:

dfs = [dask.delayed(load_pandas)(i) for i in disjoint_set_of_dfs]
dfs = [dask.delayed(pandas_to_dask)(df) for df in dfs]
return dask.delayed(concat_all)(dfs)
Run Code Online (Sandbox Code Playgroud)

在哪里

def pandas_to_dask(df):
    return dask.dataframe.from_pandas(df).to_delayed()
Run Code Online (Sandbox Code Playgroud)

我尝试了各种concat_all实现,但这似乎是合理的:

def concat_all(dfs):
    dfs = [dask.dataframe.from_delayed(df) for df in dfs]
    return dask.dataframe.multi.concat(dfs, axis='index', join='inner')
Run Code Online (Sandbox Code Playgroud)

所有的熊猫数据帧在它们的索引上都是不相交的,并且是排序的/单调的。

但是,concat_all即使每个人的内存预算实际上相当大并且我不希望它移动数据,我也会因为这个功能而被杀死(集群管理器因为超过他们的内存预算而杀死他们)。我有理由肯定,compute()在使用 dask 数据帧的图形节点中调用之前,我总是将数据切片为合理的子集。

--memory-limit到目前为止,我正在玩没有成功。我至少正确地解决了这个问题吗?是否有我遗漏的考虑?

python dask dask-delayed

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

标签 统计

comparison ×1

dask ×1

dask-delayed ×1

f# ×1

icomparable ×1

python ×1

scala ×1

scala-2.10 ×1