我需要创建一个特殊的makefile规则,最好用一个例子来解释.也许我们用规则创建文件
%_test.pdf: %.tex
pdflatex -jobname=%_test %.tex
%_result.pdf: %.tex
pdflatex -jobname=%_result %.tex
Run Code Online (Sandbox Code Playgroud)
它工作正常.只是认为发生了更多像上面那样的模板,人们可能会想到一个通配符规则
%_WILDCARD.pdf: %.tex
pdflatex -jobname=%_$(WILDCARD) %.tex
Run Code Online (Sandbox Code Playgroud)
WILDCARD由make决定.是否有可能建立这样的规则?
我有一个用matlab编译器编写的应用程序.
我想shutdown activities
在它结束时做一些事情.因为似乎不可能在matlab中捕获信号(或者我不能),我检查使用onCleanup
(Matlab:是否可以创建信号处理程序(.m脚本)).它在matlab(本机)中工作,但不在编译的应用程序中.
我试图用CTRL-C和taskkill(只能用于/ f)结束应用程序.在这两种情况下都没有执行onCleanup方法.
出于测试目的
function sigtest(varargin)
remainder=onCleanup(@()save('exit.mat'));
b=1;
while true
disp(datestr(now));
a=rand(round(5*b));%to be saved
pause(10);
b=a(1);
end
Run Code Online (Sandbox Code Playgroud)
我的源代码,我编译通过mcc -m -v sigtest.m
.
作为onether试试,我插入了线条
myexiter=addlistener(System.AppDomain.CurrentDomain,'ProcessExit',...
@(a,b)save('listexit.mat'));
Run Code Online (Sandbox Code Playgroud)
在第2行之后,这个.NET-Event也无法正常工作.
我想splint
在debian稳定的环境中运行我的一些源代码.
我需要给出预处理器指令-DUINT16_T='unsigned short'
,因为我经常需要它.我想将它放在我的.splintrc
文件中.
从命令行运行时,splint -DUINT16_T='unsigned short' mysource.c
它运行良好.如果将此行移动到我的.splintrc
文件中
-DUINT16_T='unsigned short'
-I/usr/local/include/
Run Code Online (Sandbox Code Playgroud)
该splint
调用导致
Cannot list files in .splintrc files:
short' (probable missing + or -)
A flag is not recognized or used in an incorrect way (Use -badflag to inhibit
warning)
Run Code Online (Sandbox Code Playgroud)
有人有解决方案吗?(请不要别名).
为了进行更深入的讨论,我将提供一个mnwe(最小的不工作示例)hello.c
,这可能会有所帮助:
#include <stdio.h>
int main (void)
{
UINT16_T returnvalue=0;
printf ("Hello, world!\n");
return returnvalue;
}
Run Code Online (Sandbox Code Playgroud)
命令gcc -DUINT16_T='unsigned short' hello.c
运行良好 - splint -DUINT16_T='unsigned short' hello.c …
debian whitespace splint secure-coding preprocessor-directive
请不要将此标记为如何从matlab调用python和sklearn的副本?因为我认为这个问题没有真正回答.
自从Matlab Release R2014b我认为,可以直接使用matlab中的python.
简而言之,您只需要放在py
python调用前面.
我的设置(在使用命令为matlab提供python路径之后pyversion('PATH_TO_PYTHON')
,运行正常.我甚至可以使用dask
多处理.非常酷.例如,执行py.dask.distributed.Client
结果
Python Client with properties:
asynchronous: 0
cluster: [1×1 py.distributed.deploy.local.LocalCluster]
get_futures_error: [1×1 py.method]
coroutines: [1×1 py.list]
scheduler_file: [1×1 py.NoneType]
loop: [1×1 py.tornado.platform.select.SelectIOLoop]
recreate_error_locally: [1×1 py.method]
refcount: [1×1 py.collections.defaultdict]
extensions: [1×1 py.dict]
scheduler: [1×1 py.distributed.core.rpc]
rpc: [1×1 py.distributed.core.ConnectionPool]
futures: [1×1 py.dict]
scheduler_comm: [1×1 py.distributed.batched.BatchedSend]
status: [1×7 py.str]
connection_args: [1×1 py.dict]
id: [1×43 py.str]
generation: [1×1 py.int]
io_loop: [1×1 py.tornado.platform.select.SelectIOLoop]
security: [1×1 py.distributed.security.Security]
<Client: scheduler='tcp://127.0.0.1:59795' …
Run Code Online (Sandbox Code Playgroud) 我想使用Java-Security-Implementations在MATLAB中计算MD5(或其他)文件哈希值(符合RFC 1321).因此我编码
mddigest=java.security.MessageDigest.getInstance('MD5');
filestream=java.io.FileInputStream(java.io.File(filename));
digestream=java.security.DigestInputStream(filestream,mddigest);
md5hash=reshape(dec2hex(typecast(mddigest.digest,'uint8')),1,[])
Run Code Online (Sandbox Code Playgroud)
而且例程工作正常.不知何故,结果与给定的工具不同.
也许文件编码有问题?MATLAB内部不应该解决这个问题吗?
我想重现结果,一个是md5sum(在linux上),它与HashCalc(Windows)相同.
该find
内部函数matlab
中给定locigal参数的计算结果真实回报率指标.
因此我想知道,为什么返回值(对于索引)是类型double
而不是uint32
或者uint64
像矩阵的最大索引可能是.
可能与此相关的另一个奇怪的事情是,正在运行
[~,max_num_of_elem]=computer
Run Code Online (Sandbox Code Playgroud)
返回变量max_num_of_elem
中矩阵允许的最大元素数,该变量也是类型double
.
我需要对目录中的文件进行数据分析.
我想知道,如果它更好,
在目录上实现事件监听器,并在激活时启动分析过程.然后让程序永远进入睡眠状态:while(true), sleep(1e10), end
或者有一个循环轮询变化和反应.
我个人更喜欢听众的方式,因为一个人能够在几乎同时进入的两个新文件上开始两次分析但导致两个事件.而另一个解决方案可能只处理第一个解决方案,然后找到第二个新数据.
对于选项1额外的想法:通过调用隐藏MATLAB GUI frames=java.awt.Frame.getFrames
和设置frames(index).setVisible(0)
上index
的匹配com.mathworks.mde.desk.MLMainFrame
-frame.(这个想法来自Yair Altman)
还有其他方法可以实现这样的事情吗?
我正在使用 dask 或 joblib 将一些串行处理的 python 作业转换为多处理。可悲的是,我需要在 Windows 上工作。
当从 IPython 内运行或从命令行使用 python 调用 py 文件时,一切运行正常。
使用 cython 编译可执行文件时,它不再正常运行:越来越多的进程(无限制且大于请求的进程数)开始启动并阻塞我的系统。
它以某种方式感觉像多处理炸弹- 但当然我曾经if __name__=="__main__:"
拥有控制块 - 通过在命令行中从 python 调用中正常运行获得批准。
我的 cython 调用是cython --embed --verbose --annotate THECODE.PY
,我正在编译gcc -time -municode -DMS_WIN64 -mthreads -Wall -O -I"PATH_TO_\include" -L"PATH_TO_\libs" THECODE.c -lpython36 -o THECODE
生成一个 windows 可执行文件THECODE.exe
。
其他(单处理)代码运行良好。
dask 和 joblib 的问题似乎相同(这可能意味着 dask 的工作方式类似于或基于 joblib)。
有什么建议?
对于那些对mcve感兴趣的人:只需从Multiprocessing Bomb 中获取第一个代码并使用上面的 cython 命令编译它就会导致一个可执行文件炸毁你的系统。(我刚试过:-))
通过在代码示例中添加一行以显示以下内容,我发现了一些有趣的东西__name__
: …