我知道这已经得到了回答,但似乎直接执行脚本"python filename.py"不起作用.我在SuSE Linux上有Python 2.6.2.
码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from multiprocessing import Pool
p = Pool(1)
def f(x):
return x*x
p.map(f, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
命令行:
> python example.py
Process PoolWorker-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 231, in _bootstrap
self.run()
File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python2.6/multiprocessing/pool.py", line 57, in worker
task = get()
File "/usr/lib/python2.6/multiprocessing/queues.py", line 339, in get
return recv()
AttributeError: 'module' object has no attribute 'f'
Run Code Online (Sandbox Code Playgroud) 我在这里看到过关于IDE的问题 - 哪个是Scala开发的最佳IDE?而什么是模具的斯卡拉现状如何?,但我在IDE方面有过各种各样的经历.现在,我正在使用带有自动工作区刷新选项的Eclipse IDE,以及KDE 4的Kate作为我的文本编辑器.以下是我想解决的一些问题:
-Xprint:jvm给编译器(打印出降低的代码)也是很好的.fsc.我看着Ant和Maven,虽然还没有使用过(我还需要花时间解决#3和#4).在我花时间让一个次优的构建系统工作之前,我想看看是否有人有其他建议.提前致谢!
更新 - 我现在正在使用Maven,将项目作为编译器插件传递给它.看起来足够快; 我不确定Maven的缓存是什么样的jar.可以使用Scala 2.8.0的当前存储库[ link ].原型非常酷,跨平台支持似乎非常好.但是,关于编译问题,我不确定fsc是否实际修复,或者我的项目是否足够稳定(例如类名不会改变) - 手动运行并不会让我感到烦恼.如果您想查看示例,请随意浏览我正在使用的[ github ] 的pom.xml文件.
更新2 - 从我看过的基准测试中,Daniel Spiewak是正确的,构建器比Maven更快(并且,如果正在进行增量更改,Maven的10秒延迟会变得烦人),所以如果可以制作兼容的构建文件,那么它可能是值得...
在Python中,defaultdict该类提供了一种方便的方法来创建映射key -> [list of values],在以下示例中,
from collections import defaultdict
d = defaultdict(list)
d[1].append(2)
d[1].append(3)
# d is now {1: [2, 3]}
Run Code Online (Sandbox Code Playgroud)
在Java中是否有相同的功能?
我想升级所有包,而不仅仅是特定的包cabal install --upgrade-dependencies.
有没有办法直接将字符串写入tarfile?从http://docs.python.org/library/tarfile.html看起来,只能添加已写入文件系统的文件.
假设执行了一些Haskell文件
runghc Queens.hs gecode_compile
Run Code Online (Sandbox Code Playgroud)
现在,这失败了,我想调试它ghci.如何将选项传递给gecode_compile程序,以便getArgs正确读取?
谢谢!!
有没有办法让OOM杀手工作并阻止Linux冻结?我一直在运行Java和C#应用程序,其中通常使用分配的任何内存,并且(如果我正确理解它们)过度使用会导致计算机冻结.现在,作为临时解决方案,我补充道,
vm.overcommit_memory = 2
vm.overcommit_ratio = 10
Run Code Online (Sandbox Code Playgroud)
到/etc/sysctl.conf.
对任何能够解释为什么现有OOM杀手无法以保证方式正常运行的人都感到荣幸,只要内核耗尽"真实"内存就终止进程.
编辑 - 许多回应都与迈克尔的反应一致"如果你遇到与OOM杀手相关的问题,那么你可能需要修复任何导致你内存不足的问题".我不认为这是正确的解决方案.总会有应用程序出现错误,我想调整内核,这样我的整个系统就不会冻结.鉴于我目前的技术理解,这似乎不应该是不可能的.
示例问题:我想编写一个Haskell脚本,该脚本将突出显示(例如\fbox)文档中第一次出现的数学符号.希望这能帮助我确保我已经介绍了所有内容.
正则表达式是不合适的,因为它们不会知道数学模式中的内容等,并且没有逻辑来计算事物,或者知道下一个变量\section实际上是一个新变量.
我也不想为所有LaTeX编写解析器.似乎错误的概率很高,我真的只想写一个脚本,而不是商业程序.
我写了一个混合解析器 - 一个有一些结构,并将其余部分保留为文本,在这里回答一个问题.[ 你如何以贪婪的方式使用parsec?].但是,我的方法很麻烦.有更好,更正式的方式吗?
有很多次我认为生成器样式可以更直接地返回列表,例如,
def foo(input_array):
for x in input_array:
yield processed(x)
Run Code Online (Sandbox Code Playgroud)
与
def bar(input_array):
accumulator = []
for x in input_array:
accumulator.append(processed(x))
return accumulator
Run Code Online (Sandbox Code Playgroud)
(好吧,如果它真的那么简单,我会写map,但你明白了:生成器版本更清晰).但是,并不总是需要返回类型的发电机.是否有一个内置的装饰器,我可以用它来改变foo一个返回列表或元组的函数?我自己写的方式是,
import functools
def transform_return_value(transformer):
def inner(f):
@functools.wraps(f)
def new_f(*argv, **kwargs):
return transformer(f(*argv, **kwargs))
return new_f
return inner
@transform_return_value(list)
def foo(input_array):
for x in input_array:
yield processed(x)
Run Code Online (Sandbox Code Playgroud) 对不起,这是一个愚蠢的问题,但我无法弄清楚如何将多个模块放在同一个文件中.假设该文件名为A.hs.如果我把模块B放在第一位,即
module B where ...
module A where ...
Run Code Online (Sandbox Code Playgroud)
当我跑"ghci A"时,它抱怨它预期A(它不是顶级的,所以我不想打电话给"ghci A.hs").反过来说,它抱怨"输入模块上的解析错误").
这里有一个相关的错误,http://hackage.haskell.org/trac/ghc/ticket/2428.实际上没有办法得到这个,即使其他模块只在本地使用?