小编Tri*_*tan的帖子

Python中的跨平台/ dev/null

我正在使用以下代码在Linux/OSX上为Python库隐藏stderr我默认不控制写入stderr:

f = open("/dev/null","w")
zookeeper.set_log_stream(f)
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的跨平台替代/ dev/null?理想情况下,它不会消耗内存,因为这是一个长时间运行的过程.

python

78
推荐指数
4
解决办法
3万
查看次数

F#在产卵和杀戮过程中真的比Erlang快吗?

更新:此问题包含一个错误,使基准无意义.我将尝试更好的基准比较F#和Erlang的基本并发功能,并在另一个问题中查询结果.

我正在尝试了解Erlang和F#的性能特征.我发现Erlang的并发模型非常吸引人,但我倾向于使用F#来实现互操作性.虽然开箱即用F#不提供像Erlang的并发原语 - 从我可以告诉async和MailboxProcessor只涵盖Erlang做得很好的一小部分 - 我一直试图了解F#性能的可能性明智的.

在Joe Armstrong的Programming Erlang一书中,他指出Erlang中的进程非常便宜.他使用(大致)以下代码来证明这一事实:

-module(processes).
-export([max/1]).

%% max(N) 
%%   Create N processes then destroy them
%%   See how much time this takes

max(N) ->
    statistics(runtime),
    statistics(wall_clock),
    L = for(1, N, fun() -> spawn(fun() -> wait() end) end),
    {_, Time1} = statistics(runtime),
    {_, Time2} = statistics(wall_clock),
    lists:foreach(fun(Pid) -> Pid ! die end, L),
    U1 = Time1 * 1000 / N,
    U2 = Time2 * 1000 / N,
    io:format("Process spawn time=~p (~p) microseconds~n",
          [U1, U2]).

wait() -> …
Run Code Online (Sandbox Code Playgroud)

concurrency erlang f# actor

61
推荐指数
2
解决办法
7617
查看次数

C#中的/*!*/是什么意思?

我是C#的新手,正在读/*!*/一些看似奇怪的地方的代码.例如,类方法定义为:

protected override OptionsParser/*!*/ CreateOptionsParser()
protected override void ParseHostOptions(string/*!*/[]/*!*/ args)
Run Code Online (Sandbox Code Playgroud)

不幸的/*!*/是不可谷歌.这是什么意思?

c#

31
推荐指数
3
解决办法
2265
查看次数

英特尔MKL与AMD数学核心库

有没有人有为英特尔数学核心库AMD数学核心库编程的经验?我正在构建一台用于高性能统计计算的个人计算机,并且正在讨论要购买的组件.AMD数学核心库的吸引力在于它是免费的,但我在学术界,所以MKL并不昂贵.但我有兴趣听到以下的想法:

  1. 哪个提供更好的API?
  2. 这平均每美元提供更好的性能,包括许可和硬件成本.
  3. AMCL-GPU,我应该考虑的一个因素?

math optimization hpc intel amd-processor

23
推荐指数
1
解决办法
1万
查看次数

设计Python API:Fluent接口或参数

我正在玩一个简单的Protovis API 端口到Python.

在Javascript中考虑简单的条形图示例:

var vis = new pv.Panel()
    .width(150)
    .height(150);

vis.add(pv.Bar)
    .data([1, 1.2, 1.7, 1.5, .7, .3])
    .width(20)
    .height(function(d) d * 80)
    .bottom(0)
    .left(function() this.index * 25);

vis.render();
Run Code Online (Sandbox Code Playgroud)

我在争论是否继续使用这种流畅的界面风格API或使用命名参数.使用命名参数我们可以写:

vis = pv.Panel(width=150,
               height=150)

vis = vis + pv.Bar(data=[1, 1.2],
                   width=20,
                   height=lambda d: d * 80,
                   bottom=0,
                   left=lambda: self.index * 25)
vis.render()
Run Code Online (Sandbox Code Playgroud)

是否有首选的Python风格?

python interface-design

22
推荐指数
1
解决办法
5534
查看次数

使用静态类型语言处理异构数据(F#)

F#的一个主张是它允许交互式脚本和数据操作/探索.我一直在玩F#试图了解它与Matlab和R在数据分析工作中的比较.显然,F#没有这些生态系统的所有实用功能,但我对底层语言的一般优点/缺点更感兴趣.

对我而言,即使在功能风格方面,最大的变化是F#是静态类型的.这有一些吸引力,但也经常感觉像一件紧身衣.例如,我还没有找到一种处理异构矩形数据的便捷方法 - 想想R中的数据帧.假设我正在读取一个带有名称(字符串)和权重(浮点数)的CSV文件.通常我会加载数据,执行一些转换,添加变量等,然后运行分析.在R中,第一部分可能看起来像:

df <- read.csv('weights.csv')
df$logweight <- log(df$weight)
Run Code Online (Sandbox Code Playgroud)

在F#中,我不清楚应该使用什么结构来做到这一点.据我所知,我有两个选择:1)我可以先定义一个强类型的类(专家F#9.10)或2)我可以使用异构容器,如ArrayList.静态类型的类似乎不可行,因为我需要在加载数据后以ad-hoc方式(logweight)添加变量.异构容器也不方便,因为每次访问变量时我都需要将其解包.在F#中:

let df = readCsv("weights.csv")
df.["logweight"] = log(double df.["weight"])
Run Code Online (Sandbox Code Playgroud)

如果这是一次或两次,它可能没问题,但每次使用变量时指定一个类型似乎都不合理.我经常处理调查,其中包含100个添加/删除的变量,分成新的子集并与其他数据帧合并.

我错过了一些明显的第三选择吗?是否有一些有趣和轻松的方式来交互和操纵异构数据?如果我需要在.Net上进行数据分析,我现在的意思是我应该使用IronPython进行所有数据探索/转换/交互工作,并且只对数字密集型部分使用F#/ C#.F#本质上是快速和脏的异构数据工作的错误工具吗?

.net c# f#

21
推荐指数
2
解决办法
1564
查看次数

纯python实现greenlet API

所述greenlet包由GEVENT和eventlet异步IO使用.它被编写为C-extension,因此不适用于Jython或IronPython.如果性能无关紧要,那么在纯Python中实现greenlet API的最简单方法是什么.

一个简单的例子:

def test1():
    print 12
    gr2.switch()
    print 34

def test2():
    print 56
    gr1.switch()
    print 78

gr1 = greenlet(test1)
gr2 = greenlet(test2)
gr1.switch()
Run Code Online (Sandbox Code Playgroud)

应该打印12,56,34(而不是78).

python ironpython jython

20
推荐指数
2
解决办法
3067
查看次数

用python替换Matlab

我是一名工科学生,我必须做很多数值处理,绘图,模拟等工具.我目前使用的工具是Matlab.我在大学的计算机上使用它来完成大部分作业.但是,我想知道有哪些免费选项.

我做了一些研究,很多人都说python在各种场景下都是matlab的有效替代品.我想知道如何用python做这一切.我正在使用mac,所以我如何安装不同的python包.那些包裹是什么?它真的是一个可行的选择吗?使用这个python设置我可以做什么和不能做什么?

python matlab

17
推荐指数
3
解决办法
1万
查看次数

如何将boost :: bind对象传递给函数?

我有一维功能最小化器.现在我正在传递函数指针.然而,许多功能具有多个参数,其中一些参数保持固定.我已经使用像这样的仿函数实现了这个

template <class T>
minimize(T &f) {
}

Functor f(param1, param2);
minimize<Functor>(f);
Run Code Online (Sandbox Code Playgroud)

然而,仿函数定义有很多问题.Boost :: bind看起来更干净.所以我可以这样做:

minimize(boost:bind(f,_1,param1,param2))
Run Code Online (Sandbox Code Playgroud)

但是我不清楚我的minimize声明应该使用什么boost::bind.什么类型的对象是boost::bind?是否有一个简单的模式,避免仿函数的样板,但允许多参数绑定?

c++ boost-bind

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

在F#中使用程序集属性

我正在尝试将以下构造IronPython模块的C#示例转换为F#.

using System;
using IronPython.Runtime;

[assembly: PythonModule("my_module", typeof(MyModule))]

public static class MyModule {
    public static void hello_world() {
        Console.WriteLine("hello world");
    }
}
Run Code Online (Sandbox Code Playgroud)

from my_module import *除其他外,使用PythonModule允许.

我无法弄清楚如何在F#中应用PythonModule属性.F#文档仅讨论与模块相关的程序集属性,并附加到do().我不清楚如何定义被解释为python模块的静态类,但我不是C#/ F#/ IronPython专家.

c# f# ironpython

11
推荐指数
2
解决办法
1504
查看次数