有没有办法让Python忽略任何存在的.pyc文件,并且总是直接解释所有代码(包括导入的模块)?谷歌没有提出任何答案,所以我怀疑没有,但似乎值得问以防万一.
(为什么我要这样做?我有一大堆Python脚本,它们在几百台计算机的集群上重复运行.Python脚本本身存在于一个共享的NFS文件系统上.不知怎的,很少,在运行了数百台之后几个小时的时间,它们会突然开始崩溃,导致无法导入模块的错误.强制重新生成.pyc文件可以解决问题.当然,我想修复根本原因,但是同时我们还需要系统继续运行,所以如果可能的话,忽略.pyc文件似乎是一个合理的解决方法).
PS我正在使用Python 2.5,所以我不能使用-B.
我有一个Python程序,它将把文本文件作为输入.但是,其中一些文件可能是gzip压缩的.
是否存在跨平台,可以从Python方式使用以确定文件是否压缩为gzip?
以下是可靠的还是一个普通的文本文件'不小心'看起来像gzip一样足以让我得到误报?
try:
gzip.GzipFile(filename, 'r')
# compressed
# ...
except:
# not compressed
# ...
Run Code Online (Sandbox Code Playgroud) java有一个参数-XX:MaxInlineLevel(默认值为9),它控制嵌入的嵌套调用的最大数量.为什么会有这样的限制?为什么基于频率和代码大小的通常启发式方法不足以让JVM自行决定内联的深度?
(这是由JitWatch提示我显示深度嵌套的Guava checkArgument调用由于深度没有内联)
我有一些C++代码(由其他人编写)似乎调用了错误的函数.情况如下:
UTF8InputStreamFromBuffer* cstream = foo();
wstring fn = L"foo";
DocumentReader* reader;
if (a_condition_true_for_some_files_false_for_others) {
reader = (DocumentReader*) _new GoodDocumentReader();
} else {
reader = (DocumentReader*) _new BadDocumentReader();
}
// the crash happens inside the following call
// when a BadDocumentReader is used
doc = reader->readDocument(*cstream, fn);
Run Code Online (Sandbox Code Playgroud)
条件为真的文件处理正常; 它是虚假崩溃的那些.DocumentReader的类层次结构如下所示:
class GenericDocumentReader {
virtual Document* readDocument(InputStream &strm, const wchar_t * filename) = 0;
}
class DocumentReader : public GenericDocumentReader {
virtual Document* readDocument(InputStream &strm, const wchar_t * filename) {
// some stuff …Run Code Online (Sandbox Code Playgroud) 我正在使用带有SVG foreignObject元素实现的HTML节点标签的d3强制定向布局.我想选择在不同的时间这些元素来更新自己的位置和其他属性(和跟踪他们,因为他们是创建和destoryed enter()和exit()),但我似乎不能够选择他们像其他SVG元素.
这是一个紧凑的例子:
HTML:
<html>
<head>
<title>Cannot Select SVG Foreign Object</title>
<script src="http://d3js.org/d3.v2.js"></script>
<script src = "fo_select.js"></script>
</head>
<body>
<svg id="example_svg" width="600" height="600">
<g>
<circle r="40" cx = "80" cy="80"></circle>
<foreignObject width = "100" height = "100" x = "200" y="200">
<body>Hello, world</body>
</foreignObject>
</g>
</svg>
<script>run()</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
function run() {
svg = d3.select("#example_svg");
console.log(svg.selectAll("circle"));
console.log(svg.selectAll("foreignObject"));
}
Run Code Online (Sandbox Code Playgroud)
这也是http://bl.ocks.org/3217448.控制台输出是:
[Array[1]]
[Array[0]]
Run Code Online (Sandbox Code Playgroud)
第一个数组包含circle元素,第二个数组为空.为什么circle对象可以选择,但foreignObject不是?我认为这与它的不寻常性质有关foreignObject.我如何选择它来在我的代码中操作它?非常感谢.
是否可以仅使用注释序列化Jackson中没有字段的对象?当我尝试序列化这样一个没有注释的对象时,我得到:
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class [redacted].SubjectObjectFeatureExtractor and no properties discovered to create BeanSerializer
Run Code Online (Sandbox Code Playgroud)
我已经检查了Jackson注释列表,却没有看到将类注释为没有可序列化数据的方法.我尝试@JsonCreator使用空构造函数(不要期望它工作,因为它是反序列化注释),我得到了同样的错误.没有可供使用的访问者或字段@JsonProperty.有任何想法吗?
更新:原因是我有一个对象列表,表示可以应用于某种类型数据的转换.其中一些转换是由需要序列化的参数定义的,但其中一些是无参数的(所讨论的无数据对象).我希望能够序列化和反序列化这些转换的序列.此外,我正在使用,DefaultTyping.NON_FINAL以便类名称将被序列化.
更新:示例类将是
class ExtractSomeFeature implements FeatureExtractor<SomeOtherType> {
public void extractFeature(SomeOtherType obj, WeightedFeatureList output) {
// do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我并不特别关心JSON如何看待,只要我能List<FeatureExtractor>正确反序列化s.我的印象是使用默认输入,预期的JSON将是这样的:
['com.mycompany.foo.ExtractSomeFeature', {}]
Run Code Online (Sandbox Code Playgroud)
其他子类FeatureExtractor将具有真实参数,因此它们可能看起来像:
[`com.mycompany.foo.SomeParameterizedFeature', {some actual JSON stuff in here}]
Run Code Online (Sandbox Code Playgroud)
我想我可以使用@JsonValue某种toJSONString()方法返回{},但如果可能的话,我想隐藏那些将要创建FeatureExtractor子类的最终用户的hackery .
我正在Hadoop下运行Java作业,这会导致JVM崩溃.我怀疑这是由于一些JNI代码(它使用JBLAS与多线程本机BLAS实现).但是,虽然我希望崩溃日志为调试提供"有问题的框架",但日志看起来像:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f204dd6fb27, pid=19570, tid=139776470402816
#
# JRE version: 6.0_38-b05
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.13-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# # [ timer expired, abort... ]
Run Code Online (Sandbox Code Playgroud)
JVM是否有一些计时器用于生成此故障转储输出时将等待多长时间?如果是这样,有没有办法增加时间,以便我可以获得更多有用的信息?我不认为所提到的计时器来自Hadoop,因为我在许多没有提到Hadoop的地方看到(无用)引用这个错误.
谷歌搜索似乎表明字符串"计时器已过期,中止"只显示在这些JVM错误消息中,因此它不太可能来自操作系统.
编辑:看起来我可能运气不好.从./hotspot/src/share/vm/runtime/thread.cpp
OpenJDK版本的JVM源代码:
if (is_error_reported()) {
// A fatal error has happened, the error handler(VMError::report_and_die)
// should abort JVM after creating an error log file. However …Run Code Online (Sandbox Code Playgroud) 我们的团队使用Maven管理Java项目.我们有一个策略,即master存储库分支上的所有代码应该:
-SNAPSHOT版本(版本是使用Maven Release插件创建的)-SNAPSHOTs上. 这在IntelliJ IDEA(版本15,版本143.1821.5)中有一个不幸的结果.假设Maven工件A依赖于Maven工件B的某些发布版本,比如说1.2.3.但是,Bon 的当前代码master将是类似的1.2.4-SNAPSHOT.如果我为IDEA A和BIDEA 加载源代码,请转到B其中使用的类A,并执行Find Usages(按住Ctrl键单击类名称或Alt-7),但未找到任何结果.但是,如果我在IDE中导航到反编译的类文件以进行1.2.4发布,那么Find Usages它会找到用法A.
我理解为什么会发生这种情况--- -SNAPSHOT代码的版本确实没有被使用A---但是这种程度的挑剔使Find UsagesMaven工件几乎无用.但是,我似乎记得在最近的某些时候,IDEA Find Usages并不那么挑剔.不幸的是谷歌搜索没有提到任何其他人提到这个问题或提到IDEA行为的变化,所以现在我们认为我们只是想象以前的行为.
那么,有没有人知道如何让IDEA在做Find Usages什么时忽略Maven模块上的版本不匹配?我们之前已经启用了一些设置,我们现在找不到了吗?
我正在努力提高程序的性能,该程序同时使用Boost Graph Library和boost::bimap.分析显示大部分时间都花在内存分配和释放上.使adjacency_list图库的类boost::fast_pool_allocator显着使用改进的性能.剩下的大部分内存分配都会出现boost::bimap,所以我想尝试在那里使用自定义分配器.该文件说,你可以指定分配为bimap中的最后一个模板参数,但它并没有说什么类型的模板参数分配器本身应该是.例如,对于类型X和Y,在
boost::bimap<set_of<X>, set_of<Y>, boost::fast_pool_allocator<Z> >
Run Code Online (Sandbox Code Playgroud)
应该填写什么Z?
我有一个scores与某些对象相关联的一维 numpy分数数组。这些对象属于一些不相交的组,第一组项目的所有分数在前,第二组项目的分数在后,以此类推。
我想创建一个二维数组,其中每一行对应一个组,每个条目是其中一个项目的分数。如果所有组的大小相同,我可以这样做:
scores.reshape((numGroups, groupSize))
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的小组可能大小不一。我知道 numpy 不支持参差不齐的数组,但如果结果数组只是用指定的值填充每一行以使所有行的长度相同,那么对我来说很好。
为了具体化,假设我设置A了 3 个项目、B2 个项目和C4 个项目。
scores = numpy.array([f(a[0]), f(a[1]), f(a[2]), f(b[0]), f(b[1]),
f(c[0]), f(c[1]), f(c[2]), f(c[3])])
rowStarts = numpy.array([0, 3, 5])
paddingValue = -1.0
scoresByGroup = groupIntoRows(scores, rowStarts, paddingValue)
Run Code Online (Sandbox Code Playgroud)
的期望值scoresByGroup为:
[[f(a[0]), f(a[1]), f(a[2]), -1.0],
[f(b[0]), f(b[1]), -1.0, -1.0]
[f(c[0]), f(c[1]), f(c[2]), f(c[3])]]
Run Code Online (Sandbox Code Playgroud)
是否有一些 numpy 函数或函数组合可以用来创建groupIntoRows?
背景:
反序列化时,Jackson 将从@JacksonInject提供给 的映射中获取标记为 的对象的任何属性的值,ObjectMapper而不是从 JSON 中获取。这个映射是通过调用ObjectMapper.setInjectableValues() 和提供一个InjectableValues对象来指定的 ,该对象可以查找要根据请求注入的值。
使用 Guice 创建这样的对象相当容易(就像jackson-module-guice那样)。首先,当您创建对象映射器时,您注入Injector并将其包装在一个InjectableValues实现中,该实现只是将请求转发到Injector(要注入的事物的类及其注释可用)。
为了在 Dagger 2 中实现这一点,我们需要能够获取一个Class对象(和相关的注释)并在运行时注入一个实例。然而,考虑到 Dagger 2 的代码生成方法,这似乎是不可能的。我错过了什么吗?
由于我无法控制的原因,我的许多项目目录必须包含几个符号链接,指向包含网络文件系统上大量文件(可能是数十万个)的目录.它们与根平行pom.xml.
当IntelliJ尝试索引这些目录时,它会冻结(我希望它最终会完成).通常我可以将这些目录标记为已排除,因此IntelliJ不会将它们编入索引.但是,有时会在初始项目导入后创建这些目录.如果IntelliJ在我将它们标记为排除之前捕获它们,它就会冻结.更糟糕的是,当我重新启动并尝试打开项目时,它会立即再次冻结.
如何在不实际打开IntelliJ IDEA中的项目的情况下标记应排除这些目录?
我目前正在将 XML 文档输出到 Java 文件中,如下所示:
final Document xmldoc = toXMLDocument(docTheory);
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
DOMSource source = new DOMSource(xmldoc);
StreamResult result = new StreamResult(file);
transformer.transform(source, result);
Run Code Online (Sandbox Code Playgroud)
但是,在 Windows 上运行时,这会生成带有 Windows 样式行结尾的输出。无论操作系统如何,我都希望生成 Unix 风格的行尾。我怎么能做到这一点?
java ×4
python ×3
c++ ×2
jackson ×2
bimap ×1
boost ×1
compression ×1
d3.js ×1
dagger ×1
dagger-2 ×1
force-layout ×1
gzip ×1
hadoop ×1
javascript ×1
jit ×1
jvm ×1
line-endings ×1
maven ×1
memory-pool ×1
numpy ×1
overloading ×1
pyc ×1
svg ×1
windows ×1
xml ×1