小编emc*_*sen的帖子

Linux上Python系统范围的互斥体

有没有简单的方法在Linux上使用Python系统范围的互斥?通过"系统范围",我的意思是互斥体将被一组Python 进程使用 ; 这与传统互斥体形成对比,传统互斥体由同一进程中的一组线程使用.

编辑:我不确定Python的multiprocessing包是我需要的.例如,我可以在两个不同的解释器中执行以下操作:

from multiprocessing import Lock
L = Lock()
L.acquire()
Run Code Online (Sandbox Code Playgroud)

当我在两个单独的解释器中同时执行这些命令时,我希望其中一个挂起.相反,它们都没有挂起; 看起来他们没有获得相同的互斥锁.

python linux mutex

51
推荐指数
5
解决办法
2万
查看次数

从Scala中的字符串中读取案例类对象(类似于Haskell的"读取"类型类)

我想读一个字符串作为案例类的实例.例如,如果函数名为"read",它将允许我执行以下操作:

case class Person(name: String, age: Int)
val personString: String = "Person(Bob,42)"
val person: Person = read(personString)
Run Code Online (Sandbox Code Playgroud)

这与Haskell中的读类型类相同.

serialization haskell scala

16
推荐指数
4
解决办法
9673
查看次数

C++的"内联" - 对GCC和Clang/LLVM有多强烈的暗示?

在C++中,关键字"inline"有两个用途.首先,它允许定义出现在多个翻译单元中.其次,它提示编译器应该在编译的代码中内联函数.

我的问题:在代码由GCC和锵/ LLVM产生,并关键字"内联"有任何一个功能是否被内联轴承?如果是,在什么情况下?或者暗示完全被忽略了?请注意,这不是语言问题,而是特定于编译器的问题.

c++ gcc clang inline-code

14
推荐指数
3
解决办法
6041
查看次数

从两个HList创建所有对的HList

我在Scala中使用无形,我想编写一个函数allPairs,它将获取两个HLists并返回所有元素对的HList.例如:

import shapeless._
val list1 = 1 :: "one" :: HNil
val list2 = 2 :: "two" :: HNil
// Has value (1, 2) :: (1, "two") :: ("one", 2) :: ("one", "two") :: HNil
val list3 = allPairs(list1, list2)
Run Code Online (Sandbox Code Playgroud)

知道怎么做吗?

另外,我想强调一下我正在寻找一个函数,而不是一个内联的代码块.

scala hlist shapeless

14
推荐指数
1
解决办法
987
查看次数

用于C++的类型安全构建系统(类似于SBT)

在使用Scala的简单构建工具(SBT)并喜欢它之后,我正在开发一个广泛使用CMake的C++项目.CMake文件非常复杂,修改它们甚至理解它们都很痛苦.相比之下,我发现即使是大型项目的SBT配置也是可读的,我认为由于静态类型和不变性.

是否有任何努力将SBT风格的优点带入C++?

c++ build-automation cmake sbt

13
推荐指数
1
解决办法
1874
查看次数

Haskell:从Data.Random中的RVar中获取值

如何编写具有类型签名的函数,如:

mySample :: StdGen -> Int -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)

就......而言

sample :: Int -> [a] -> RVar [a]
Run Code Online (Sandbox Code Playgroud)

哪个样本在Data.Random.Extras中定义?这里,sample是一个从给定列表返回随机子列表的函数.

random monads haskell

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

Scala酸洗和类型参数

我正在使用Scala Pickling,一个Scala的自动序列化框架.根据作者的幻灯片,T只要有隐含Pickler[T]的范围,任何类型都可以被腌制.在这里,我假设她的意思scala.tools.nsc.io.Pickler.但是,以下内容无法编译:

import scala.pickling._
import scala.pickling.binary._
import scala.tools.nsc.io.Pickler

object Foo {
  def bar[T: Pickler](t: T) = t.pickle
}
Run Code Online (Sandbox Code Playgroud)

错误是:

[error] exception during macro expansion:
[error] scala.ScalaReflectionException: type T is not a class
[error]     at scala.reflect.api.Symbols$SymbolApi$class.asClass(Symbols.scala:323)
[error]     at scala.reflect.internal.Symbols$SymbolContextApiImpl.asClass(Symbols.scala:73)
[error]     at scala.pickling.PickleMacros$class.pickleInto(Macros.scala:381)
[error]     at scala.pickling.Compat$$anon$17.pickleInto(Compat.scala:33)
[error]     at scala.pickling.Compat$.PickleMacros_pickleInto(Compat.scala:34)
Run Code Online (Sandbox Code Playgroud)

我正在使用Scala 2.10.2与scala-pickling 0.8-SNAPSHOT.

这是错误还是用户错误?

编辑1:同样的错误既出现scala.pickling.SPicklerscala.pickling.DPickler.

编辑2:看起来这是一个错误:https://github.com/scala/pickling/issues/31

scala scala-pickling

7
推荐指数
1
解决办法
2633
查看次数

在iPhone上进行GPU加速计算(GPGPU)的资源?

我有兴趣在iOS中进行GPU加速计算(适用于iPhone 3GS和4).不幸的是,这两种设备都不支持OpenCL,因此似乎唯一的选择是将程序数据表示为图形数据,并使用OpenGL ES 2.0可编程着色器(顶点和片段)来完成工作.任何人都可以推荐任何可能有用的资源吗?示例代码是圣杯.

iphone gpgpu ios opengl-es-2.0

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

MATLAB:使用列表访问多维数组的元素

我有一个d维数组,A和长度等于d的向量inds.我想在inds访问A的值.

理想情况下,我会做类似A(*inds)的东西(借用Python的解包语法).我不知道如何在MATLAB中做到这一点.

如果我做A(inds),我实际上从A得到了单独的值,这不是我想要的.我想要的是inds的元素i是函数调用A()中的第i个参数.

matlab argument-unpacking

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

将闭包传递给Scala编译器插件

我正在尝试编写一个Scala编译器插件,它允许非常通用的代码生成:类似于C预处理器的通用性,但更多类型安全(我不确定这是否是一个糟糕的想法,但它是一个有趣的练习).我理想的用例看起来像这样:

// User code. This represents some function that might take some args
// and outputs an abstract syntax tree.
def createFooTree(...): scala.reflect.runtime.universe.Tree = ...

// Later user code (maybe separate compilation?). Here the user generates
// code programmatically using the function call to |createFooTree| and inserts
// the code using insertTree.
insertTree(createFooTree(...))
Run Code Online (Sandbox Code Playgroud)

重要的插件代码可能如下所示(基于):

class InsertTreeComponent(val global: Global)
  extends PluginComponent
  with TypingTransformers {
  import global._
  import definitions._

  override val phaseName = "insertTree"

  override val runsRightAfter = Some("parser")
  override …
Run Code Online (Sandbox Code Playgroud)

scala scalac scala-compiler

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