考虑这个python程序:
import sys
lc = 0
for line in open(sys.argv[1]):
lc = lc + 1
print lc, sys.argv[1]
Run Code Online (Sandbox Code Playgroud)
在我的6GB文本文件上运行它,它在~2分钟内完成.
问题:是否有可能加快速度?
请注意,同一时间需要:
wc -l myfile.txt
Run Code Online (Sandbox Code Playgroud)
所以,我怀疑对我的问题的回答只是一个简单的"不".
另请注意,我的真实程序正在做一些比计算线条更有趣的事情,所以请给出一个通用答案,而不是行计数技巧(比如在文件中保留行数元数据)
PS:我在这个问题上标记了"linux",因为我只对linux特定的答案感兴趣.如果有的话,请随意提供与操作系统无关的内容,甚至是其他操作系统的答案.
另见后续问题
二值化是将实体的彩色特征转换为数字向量(通常是二进制向量)的行为,以便为分类器算法提供良好的示例.
如果我们将句子"猫吃狗"二进制化,我们可以先为每个单词分配一个ID(例如cat-1,ate-2,the-3,dog-4),然后简单地将单词替换为它的ID给出了矢量<3,1,2,3,4>.
给定这些ID,我们还可以通过给每个字四个可能的槽创建二进制向量,并将对应于特定单词的槽设置为1,给出向量<0,0,1,0,1,0,0,0 ,0,1,0,0,0,0,0,1>.据我所知,后一种方法通常被称为词袋方法.
现在,对于我的问题,一般来说,描述自然语言处理的特征,特别是基于转换的依赖解析(使用Nivres算法)时,最好的二值化方法是什么?
在这种情况下,我们不希望编码整个句子,而是编码解析的当前状态,例如堆栈中的顶部单词和输入队列中的第一个单词.由于订单具有高度相关性,因此排除了词袋方法.
有了最好的,我指的是,使数据的最可理解的分类方法,而无需使用了不必要的内存.例如,如果只有2%的双子星实际存在,我不想要一个单词bigram使用4亿个特征来获得20000个独特单词.
由于答案也取决于特定的分类器,我最感兴趣的是最大熵模型(liblinear),支持向量机(libsvm)和感知器,但是也欢迎适用于其他模型的答案.
假设我在src/tree中有我的源代码(可能在我的测试/树中).说我想只编译那棵树的一部分.我可能想要这样做的原因是多种多样的.作为一个例子,我可能想要创建尽可能小的jar(不包括某些类),或者我可能想要编译的最快的编译时间.我绝对想编译所有的依赖项!
这可以通过以下命令行轻松实现:
javac -d build/ -cp whatever -sourcepath src src/path/to/MyClass.java
Run Code Online (Sandbox Code Playgroud)
现在,你怎么能用蚂蚁做到这一点?javac ant 任务编译所有内容:
将递归扫描源和目标目录以查找要编译的Java源文件.
可以使用excludes和includes参数,但它们是有问题的.事实上,它似乎是一个有明确设置所有的includes(不是自动的依赖查找),并且即使最差的是排除优先于包括:
当使用包含和排除时,仅使用与至少一个包含模式匹配且与任何排除模式不匹配的文件/目录.
因此,你不能使用
<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"
excludes="**/*.java" includes="src/path/to/MyClass.java" />
Run Code Online (Sandbox Code Playgroud)
因为它不会编译任何东西:-(
有没有办法javac用ant 实现这个简单的命令行?
编辑:谢谢你的回答,萨迪,我接受了,因为它确实以我在这个问题中想知道的方式工作.但是我有几条评论(在你的答案的评论栏中太长了):
1)我确实阅读了文档(参见上面的链接),但目前还不清楚只是includes你实际上也排除了其他一切
2)当你只是includes蚂蚁记录类似的东西
[javac] Compiling 1 source file to /my/path/to/build
Run Code Online (Sandbox Code Playgroud)
即使依赖项使其编译(多)只是一个源文件.
ldd是一种检查给定可执行文件正在或将要使用的共享库的简单方法.但是它并不总是按预期工作.例如,请参阅以下shell片段,演示如何"失败"将libreadline"依赖"发现到python二进制文件中
我尝试了很多其他发行版,但我是从Tikanga复制的
$ lsb_release -a
LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.6 (Tikanga)
Release: 5.6
Codename: Tikanga
Run Code Online (Sandbox Code Playgroud)
查看ldd默认安装的内容python(来自官方存储库).
$ which python
/usr/bin/python
$ ldd `which python`
libpython2.4.so.1.0 => /usr/lib64/libpython2.4.so.1.0 (0x00000030e6200000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000030e0e00000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000030e0a00000)
libutil.so.1 => /lib64/libutil.so.1 (0x00000030ee800000)
libm.so.6 => /lib64/libm.so.6 (0x00000030e0600000)
libc.so.6 => /lib64/libc.so.6 (0x00000030e0200000)
/lib64/ld-linux-x86-64.so.2 (0x00000030dfe00000)
$ ldd `which python` | grep readline
$
Run Code Online (Sandbox Code Playgroud)
没有找到关于readline的内容.现在我从交互式使用中知道这个二进制文件确实具有实际功能,所以不要试图看看它来自何处.
$ python &
[1] 21003
$ Python …Run Code Online (Sandbox Code Playgroud) 我正在 Android 中开发应用程序,其中有一个使用Transcrypt用 javascript 和 python 编写的部分(这几乎与我直接用 javascript 开发该部分相同,但我无法完全控制事物的制作方式)。Android 使用WebView在 Activity 中显示该部分。启动它的相关java代码很简单
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
mWebView.loadUrl("file:///android_asset/AndroidWebView.html");
Run Code Online (Sandbox Code Playgroud)
相关部分AndroidWebView.html类似于Transcript 的 iOS 演示
<script type="module">
import * as my_app from "./target/my_app.js"; window.my_app = my_app;
</script>
Run Code Online (Sandbox Code Playgroud)
该应用程序在模拟器上运行良好,但在真实设备上 WebView 拒绝加载 javascript 并抛出以下错误:
Failed to load module script: The server responded with a non-JavaScript MIME type of "". Strict MIME type checking is enforced for module scripts per HTML spec.
Run Code Online (Sandbox Code Playgroud)
如果我通过将 HTML 更改为强制 MIME 类型 …
我需要以各种形式绘制一些数据.目前我正在使用Matplotlib,我对我能够制作的情节非常满意.
这个问题是如何绘制最后一个.数据类似于"距离表",就像这样(只是更大,我的表是128x128,每个元素仍然有3个或更多的数字).
现在,我的数据比距离表更好"结构化"(我的数据不会像按字母顺序排序的距离表那样"随机"变化),因此3D 条形图,或者其中3个,可能是完美的.我的理解是Matplotlib中缺少这样的图表.
我可以使用(彩色)Countor3d像这些在2D或类似imshow,但它是不是真的很好代表的是什么数据(数据有意义只是在我的128点,没有两个点之间的任何东西) .和酒吧的高度比颜色,IMO更可读.
因此问题:
采用以下泛型示例
import java.util.List;
import java.util.ArrayList;
public class GenericsTest {
private List<Animal> myList;
public static void main(String args[]) {
new GenericsTest(new ArrayList<Animal>()).add(new Dog());
}
public GenericsTest(List<Animal> list) {
myList = list;
}
public void add(Animal a) {
myList.add(a);
}
public interface Animal {}
public static class Dog implements Animal {}
public static class Cat implements Animal {}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.但是如你所知,你不能用它构建它
new GenericsTest(new ArrayList<Dog>());
Run Code Online (Sandbox Code Playgroud)
因为,如你所知,add(Animal)可以添加Cats.该建议解决这个问题的方法,即使用通配符也不管用,因为,是的,你可以改变每一个List<Animal>中List<? extends Animal>却有着同样的问题:你可以创建GenericsTest与List<Cat>再添加Dog秒.
所以我的问题是:有没有一种方便的方法来编写这个类一次,然后将它用于所有可能的Animals …
我正试图用来mtrace检测fortran程序中的内存泄漏.我正在使用gfortran编译器.有关mtrace的(工作)C示例,请参阅维基百科条目:http://en.wikipedia.org/wiki/Mtrace
我尝试了两种方法,即包装mtrace()和muntrace()并从fortran程序调用它们,以及创建一个直接调用mtrace()和muntrace()的C程序,除了它们之间泄漏的fortran代码.两种方法都无法检测到内存泄漏,但在这里我只介绍后者.
example.c
#include <stdlib.h>
#include <mcheck.h>
extern void leaky_(); // this might be different on your system
// if it doesn't work, try to run:
// 1) gfortran leaky.f90 -c
// 2) nm leaky.o
// and then change this declaration and its use below
void main() {
mtrace();
leaky_();
muntrace();
}
Run Code Online (Sandbox Code Playgroud)
leaky.f90
subroutine leaky()
real, allocatable, dimension(:) :: tmp
integer :: error
allocate (tmp(10), stat=error)
if (error /= 0) then
print*, "subroutine leaky could …Run Code Online (Sandbox Code Playgroud) 有没有一个工具可以解析我的源代码(fortran,C或C++)并返回统计数据,如循环次数,平均循环大小,函数数量,函数调用次数,数量,大小和数组类型,变量等?
同样的事情也来此不上我的架构很容易地运行
根据这个FAQ,libsvm中的模型格式应该是直截了当的.事实上,当我打电话时,它就是svm-train.例如,a1a数据集的第一个SV 是
1 3:1 11:1 14:1 19:1 39:1 42:1 55:1 64:1 67:1 73:1 75:1 76:1 80:1 83:1
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我使用easy.py脚本,我的第一个SV最终会:
512 1:-1 2:-1 3:1 4:-1 5:-1 6:-1 7:-1 8:-1 9:-1 10:-1 11:1 13:-1 14:1 15:-1 16:-1 17:-1 18:-1 19:1 20:-1 21:-1 22:-1 23:-1 24:-1 25:-1 26:-1 27:-1 28:-1 29:-1 30:-1 31:-1 32:-1 33:-1 34:-1 35:-1 36:-1 37:-1 38:-1 39:1 40:-1 41:-1 42:1 43:-1 44:-1 45:-1 46:-1 47:-1 48:-1 49:-1 50:-1 51:-1 52:-1 53:-1 54:-1 …Run Code Online (Sandbox Code Playgroud) c ×2
fortran ×2
java ×2
libsvm ×2
linux ×2
python ×2
text-files ×2
3d ×1
android ×1
ant ×1
c++ ×1
file-format ×1
gcc ×1
generics ×1
jar ×1
javac ×1
javascript ×1
ldd ×1
matplotlib ×1
memory-leaks ×1
mtrace ×1
nlp ×1
parsing ×1
performance ×1
plot ×1
statistics ×1
webview ×1