这是以下部分,
调用Fortran 90样式例程的危险
Run Code Online (Sandbox Code Playgroud)program main real, dimension(5) :: x x = 0. ! THIS IS WRONG call incb(x) print *, x end program main subroutine incb(a) ! this is a fortran90 style subroutine real, dimension(:) :: a a = a + 1. end subroutine incb解释子例程incb使用Fortran 90样式的假定形状数组(包含维度(:)).此类例程必须位于模块中,或者在使用它们的任何地方都具有显式接口.在这个例子中,没有一个是真的.
调用此类过程的一种正确方法是使用显式接口,如下所示:
Run Code Online (Sandbox Code Playgroud)program main real, dimension(5) :: x ! THIS IS THE RIGHT WAY interface subroutine incb(a) real, dimension(:) :: a end subroutine incb end interface x = 0. call incb(x) …
users为方便起见,我在集合中定义了一些有用的字段.允许客户访问相应字段的正确方法是什么?我正在使用该autopublish包,但是Meteor.user()从客户端只显示该emails数组.
当我在NumPy的源代码树中列出所有Fortran文件时,我得到:
./doc/source/f2py/scalar.f
./doc/source/f2py/string.f
./doc/source/f2py/calculate.f
./doc/source/f2py/moddata.f90
./doc/source/f2py/array.f
./doc/source/f2py/allocarr.f90
./doc/source/f2py/extcallback.f
./doc/source/f2py/common.f
./doc/source/f2py/ftype.f
./doc/source/f2py/fib3.f
./doc/source/f2py/callback.f
./doc/source/f2py/fib1.f
./doc/f2py/f2python9-final/src/examples/exp1.f
./doc/f2py/simple.f
./doc/f2py/multiarray/foo.f
./doc/f2py/hello.f
./doc/f2py/ex1/bar.f
./doc/f2py/ex1/foobar-smart.f90
./doc/f2py/ex1/foo.f
./doc/f2py/ex1/arr.f
./doc/f2py/ex1/foobar.f90
./numpy/f2py/tests/src/mixed/foo_fixed.f90
./numpy/f2py/tests/src/mixed/foo_free.f90
./numpy/f2py/tests/src/mixed/foo.f
./numpy/f2py/tests/src/size/foo.f90
./numpy/f2py/tests/src/kind/foo.f90
./numpy/f2py/tests/src/assumed_shape/precision.f90
./numpy/f2py/tests/src/assumed_shape/foo_use.f90
./numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap
./numpy/f2py/tests/src/assumed_shape/foo_free.f90
./numpy/f2py/tests/src/assumed_shape/foo_mod.f90
./numpy/f2py/src/test/bar.f
./numpy/f2py/src/test/foo.f
./numpy/f2py/src/test/foo90.f90
./numpy/f2py/src/test/wrap.f
./numpy/distutils/tests/f2py_ext/src/fib1.f
./numpy/distutils/tests/f2py_f90_ext/include/body.f90
./numpy/distutils/tests/f2py_f90_ext/src/foo_free.f90
Run Code Online (Sandbox Code Playgroud)
所以除了f2py之外,其他人都使用Fortran.我研究了线性代数模块.对于LAPACK,有一个make_lite.py从一个LAPACK源树中仅提取必要的子程序文件,以及使用它们转换成C f2c.因此,在创建NumPy的过程中,创建它是否方便f2py?我错过了什么吗?
编辑
事实证明,SciPy中的很多软件包都使用f2py.运行
$ find . -iname '*.f*' | cut -d'/' -f3,4 | uniq
Run Code Online (Sandbox Code Playgroud)
给我填写Fortran文件的确切目录:
linalg/src
fftpack/src
odr/odrpack
special/cdflib
special/amos
special/mach
special/specfun
integrate/quadpack
integrate/odepack
integrate/dop
integrate/linpack_lite
integrate/mach
sparse/linalg
interpolate/fitpack
optimize/minpack2
optimize/minpack
optimize/nnls
optimize/cobyla
optimize/lbfgsb
optimize/slsqp …Run Code Online (Sandbox Code Playgroud) 在GitPython中,我可以通过调用diff()不同提交对象之间的方法来单独迭代树中每个更改的diff信息.如果我diff()使用create_patch=True关键字参数调用,则会为每个我可以通过创建的diff对象访问的更改(添加,删除,重命名)创建补丁字符串,并剖析更改.
但是,我没有父级与第一次提交进行比较.
import git
from git.compat import defenc
repo = git.Repo("path_to_my_repo")
commits = list(repo.iter_commits('master'))
commits.reverse()
for i in commits:
if not i.parents:
# First commit, don't know what to do
continue
else:
# Has a parent
diff = i.diff(i.parents[0], create_patch=True)
for k in diff:
try:
# Get the patch message
msg = k.diff.decode(defenc)
print(msg)
except UnicodeDecodeError:
continue
Run Code Online (Sandbox Code Playgroud)
您可以使用该方法
diff = repo.git.diff_tree(i.hexsha, '--', root=True)
Run Code Online (Sandbox Code Playgroud)
但这会git diff使用给定的参数调用整个树,返回一个字符串,我无法分别获取每个文件的信息.
也许,有一种方法可以创建某种root对象.如何在存储库中获得第一个更改?
编辑
一个肮脏的解决方法似乎是通过直接使用 …
我正在使用Emacs编辑Webpack开发服务器监视的目录中的文件。每次我对文件进行更改时.#original_filename,即使我没有将更改保存在Emacs中,也会在同一目录(例如)中创建一个备份文件。即使我没有进行更改,这也会导致服务器的观察者注册更改。因此,每次我对文件进行更改时,服务器都会重新加载,然后在保存文件时再次进行重新加载。
这有点令人困惑和耗时。查看Webpack的文档,我发现了以下选项:
对于某些系统,监视许多文件系统可能会导致大量CPU或内存使用。可以排除诸如node_modules之类的巨大文件夹:
Run Code Online (Sandbox Code Playgroud)ignored: /node_modules/也可以使用anymatch模式:
Run Code Online (Sandbox Code Playgroud)ignored: "files/**/*.js"
所以我修改了我的配置,如下所示,以匹配并忽略以.:开头的文件:
devServer: {
...
watchOptions: {
ignored: './src/app/**/.*',
},
...
}
Run Code Online (Sandbox Code Playgroud)
我重新启动开发服务器,但观察程序仍将备份文件注册为对代码库所做的更改。我究竟做错了什么?
Python支持集成在最新版本的emacs中.例如,C-c C-z为我提供了一个解释器,并C-c C-c自动解释我正在处理的文件,而无需移动到其他缓冲区.(虽然emacs的方法有一些缺点)
这在vim中是否可行,或者只需两次击键即可轻松完成?我知道我可以评估一个表达式:python,但这并不是我想要的.
在ocamllex中,我可以使用_词法规则来匹配任何与先前定义的规则不匹配的字符串,并引发错误.如何在lex/flex中实现这一点?
我应该用这个庞大的Fortran 77程序进行研究(我最近将它移植到Fortran 90表面).它是一个非常古老的软件,用于使用有限元方法进行建模.
我想做的事:
f2py,因此性能没有损失.我已经告诉该节目是该死在当前状态快?希望将对数字子程序和I/O的调用移植到python不会减慢到不切实际的水平(或者它会吗?).我想知道:
f2py适合并完成包装众多子程序和公共块而没有任何混淆的任务?我只在网上看过单文件示例f2py; 我知道numpy已经用它来包装LAPACK和东西,但我需要保证这f2py是一个足以完成这项任务的工具.笔记:
标题不言而喻.我们使用OpenGL渲染逼真的图像,但是如果我们无法连接到图形用户界面呢?
我正在尝试编写一个函数来增加int指定数量的mutable .
let increase var:int ref amount = (var := !var+amount;var);;
Run Code Online (Sandbox Code Playgroud)
这就是我提出的,但它会产生错误.这样做的正确方法是什么?