我正在使用以下代码在Linux/OSX上为Python库隐藏stderr我默认不控制写入stderr:
f = open("/dev/null","w")
zookeeper.set_log_stream(f)
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的跨平台替代/ dev/null?理想情况下,它不会消耗内存,因为这是一个长时间运行的过程.
更新:此问题包含一个错误,使基准无意义.我将尝试更好的基准比较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) 我是C#的新手,正在读/*!*/
一些看似奇怪的地方的代码.例如,类方法定义为:
protected override OptionsParser/*!*/ CreateOptionsParser()
protected override void ParseHostOptions(string/*!*/[]/*!*/ args)
Run Code Online (Sandbox Code Playgroud)
不幸的/*!*/
是不可谷歌.这是什么意思?
我正在玩一个简单的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风格?
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#本质上是快速和脏的异构数据工作的错误工具吗?
所述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).
我是一名工科学生,我必须做很多数值处理,绘图,模拟等工具.我目前使用的工具是Matlab.我在大学的计算机上使用它来完成大部分作业.但是,我想知道有哪些免费选项.
我做了一些研究,很多人都说python在各种场景下都是matlab的有效替代品.我想知道如何用python做这一切.我正在使用mac,所以我如何安装不同的python包.那些包裹是什么?它真的是一个可行的选择吗?使用这个python设置我可以做什么和不能做什么?
我有一维功能最小化器.现在我正在传递函数指针.然而,许多功能具有多个参数,其中一些参数保持固定.我已经使用像这样的仿函数实现了这个
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
?是否有一个简单的模式,避免仿函数的样板,但允许多参数绑定?
我正在尝试将以下构造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专家.
python ×4
c# ×3
f# ×3
ironpython ×2
.net ×1
actor ×1
boost-bind ×1
c++ ×1
concurrency ×1
erlang ×1
hpc ×1
intel ×1
jython ×1
math ×1
matlab ×1
optimization ×1