我正在大学里做一个项目,需要运行我编写的程序的多个实例(1000s)(用C++编写),这个程序运行了很长时间(比如说2个小时).该程序是非常自包含的 - 它不需要输入文件,我认为唯一的依赖是提升.
我目前正在使用大学拥有的计算机集群.然而,它已经很老了,而且调度和监控服务的工作非常糟糕.
所以我想知道我是否可以在其他地方经营我的工作,换一些钱.例如,我看了一下谷歌应用引擎,但似乎每个工作必须在30秒后结束它不适合我.也许亚马逊EC2?
你知道这些选择吗?
我希望能够在main之前初始化一个大小为'SIZE'的向量.通常我会这样做
static vector<int> myVector(4,100);
int main() {
// Here I have a vector of size 4 with all the entries equal to 100
}
Run Code Online (Sandbox Code Playgroud)
但问题是我想将向量的第一项初始化为某个值,将另一个初始化为另一个值.
是否有捷径可寻?
我正在使用Linux上的集群系统(www.mosix.org),它允许我运行作业并让系统在不同的计算机上运行它们.工作就像这样运行:
mosrun ls &
Run Code Online (Sandbox Code Playgroud)
这自然会创建进程并在后台运行它,返回进程ID,如下所示:
[1] 29199
Run Code Online (Sandbox Code Playgroud)
稍后它会回来.我正在编写一个可以运行作业并控制它们的Python基础结构.为此,我想使用上面的mosrun程序运行作业,并保存生成的进程的进程ID(在这种情况下为29199).这自然不能使用os.system或commands.getoutput来完成,因为打印的ID不是进程打印输出的内容...任何线索?
编辑:
由于python脚本仅用于初始运行脚本,因此脚本需要比python shell运行更长时间.我想这意味着mosrun进程不能成为脚本的子进程.有什么建议?
谢谢
我正在尝试使用PYTHONSTARTUP环境变量.我在"我的电脑" - >"高级"等中将其设置为"c:\ python25\pythonstartup.py",它似乎不起作用.
打开IDLE不会运行脚本,尽管它识别了变量:
>>> import os
>>> os.environ['PYTHONSTARTUP']
'c:\\python25\\pythonstartup.py'
>>>
Run Code Online (Sandbox Code Playgroud)
我正在使用XP和Python 2.5.2.我还不想升级到3.0.
谢谢
我在Sun Grid Engine上运行了很多工作.由于这些是一个作业(~100000),我想使用数组作业,这在队列中似乎更容易.
另一个问题是每个作业产生一个stdout和stderr文件,我需要跟踪错误.如果我在其中定义它们,qsub -t 1-100000 -o outputdir -e errordir我将最终拥有包含100000个文件的目录,这太多了.
有没有办法让每个作业将输出文件写入目录(例如,一个目录,其中包含作业ID的前2个字符,即随机十六进制字母;或作业编号modulu 1000,或某种类似的东西).
谢谢
I want to use a cache, implemented by boost's unordered_map, from a dynamic_bitset to a dynamic_bitset. The problem, of course, is that there is no default hash function from the bitset. It doesn't seem to be like a conceptual problem, but I don't know how to work out the technicalities. How should I do that?
我试图从UniProt获得一些结果,这是一个蛋白质数据库(细节并不重要).我正在尝试使用一种从一种ID转换为另一种ID的脚本.我能够在浏览器上手动执行此操作,但无法在Python中执行此操作.
在http://www.uniprot.org/faq/28中有一些示例脚本.我尝试了Perl,它似乎工作,所以问题是我的Python尝试.(工作)脚本是:
## tool_example.pl ##
use strict;
use warnings;
use LWP::UserAgent;
my $base = 'http://www.uniprot.org';
my $tool = 'mapping';
my $params = {
from => 'ACC', to => 'P_REFSEQ_AC', format => 'tab',
query => 'P13368 P20806 Q9UM73 P97793 Q17192'
};
my $agent = LWP::UserAgent->new;
push @{$agent->requests_redirectable}, 'POST';
print STDERR "Submitting...\n";
my $response = $agent->post("$base/$tool/", $params);
while (my $wait = $response->header('Retry-After')) {
print STDERR "Waiting ($wait)...\n";
sleep $wait;
print STDERR "Checking...\n";
$response = $agent->get($response->base);
}
$response->is_success ?
print $response->content …Run Code Online (Sandbox Code Playgroud) 我想在远程计算机上使用Jupyter笔记本.设置如下:我有我的家用笔记本电脑,它可以ssh到我大学网络上的特定计算机(例如gateway.myuniv.edu).一旦我登录gateway.myuniv.edu,我可以ssh到我想运行Jupyter笔记本服务器的计算机(例如cluster.myuniv.edu).
有效:我可以在网关上运行服务器,并使用本地端口转发从我的笔记本电脑连接到服务器,如下所示:
上gateway.myuniv.edu:$ jupyter notebook --no-browser --port 8888
在我的笔记本上: $ ssh -v -N -L 9000:localhost:8888 myusername@gateway.myuniv.edu
然后在我的笔记本电脑的浏览器上打开网址: http://localhost:9000
什么行不通:我不想在网关上运行服务器,因为我不能在那里进行繁重的计算.我试着做以下事情:
上cluster.myuniv.edu:$ jupyter notebook --no-browser --port 8888
在我的笔记本上: $ ssh -v -N -L 9000:cluster.myuniv.edu:8888 myusername@gateway.myuniv.edu
然后在我的笔记本电脑的浏览器上打开网址:http://localhost:9000.这不起作用:SSH表示连接被拒绝.
我不明白为什么会发生这种情况以及如何调试它会很乐意提供任何帮助.谢谢!
当尝试按照numpy(我认为)中的定义来挑选对象Inf时,转储变为Ok但是加载失败:
>>> cPickle.dump(Inf, file("c:/temp/a.pcl",'wb'))
>>> cPickle.load(file("c:/temp/a.pcl",'rb'))
Traceback (most recent call last):
File "<pyshell#257>", line 1, in <module>
cPickle.load(file("c:/temp/a.pcl",'rb'))
ValueError: could not convert string to float
>>> type(Inf)
<type 'float'>
Run Code Online (Sandbox Code Playgroud)
这是为什么?此外 - 有没有办法解决这个问题?我想腌制含有Inf的东西 - 将它改成别的东西会破坏程序的优雅......
谢谢
我正在计算集合的交集,并集和差异.我有一个我的set类型的typedef:
typedef set<node_type> node_set;
Run Code Online (Sandbox Code Playgroud)
当它被替换为
typedef hash_set<node_type> node_set;
Run Code Online (Sandbox Code Playgroud)
结果不同.这是一个复杂的程序,在我开始调试之前 - 我做得对吗?当我使用这样的函数时:
set_intersection(v_higher.begin(), v_higher.end(), neighbors[w].begin(), neighbors[w].end(),
insert_iterator<node_set>(tmp1, tmp1.begin()));
Run Code Online (Sandbox Code Playgroud)
我最近发现notify-send,它打开了一个通知窗口,所以我可以做以下事情:
compile && notify-send "Done!" || notify-send "Failed"
Run Code Online (Sandbox Code Playgroud)
这让我觉得我想创建一个变量:
export NS="&& notify-send \"Done!\" || notify-send \"Failed\""
Run Code Online (Sandbox Code Playgroud)
然后我可以轻松地将它添加到我想要通知的许多命令行:
compile $NS
send-big-file $NS
start-a-heavy-job $NS
Run Code Online (Sandbox Code Playgroud)
但是这显然不能正常工作,我似乎无法想出可变替换的正确组合,以使其工作......任何想法?
我想使用一些软件包(即IPython或zdaemon),但我在一个系统(我的大学)上这样做,它没有给我/ usr/local,/ usr/bin或所有这些目录的权限.有办法解决吗?
我在boost的program_options(版本1.42)上编写以下代码.这似乎是直截了当的,并且与本教程非常相似.但是,我收到"multiple_occurrences"错误.进一步调查发现它(可能)是引发它的"文件名"参数.
我给出的参数是:
3 1 test.txt 100
Run Code Online (Sandbox Code Playgroud)
我没有任何见解......任何帮助将不胜感激.
po::options_description common("Common options");
common.add_options()
("help", "produce help message")
("motif_size", po::value<int>(&motif_size), "Size of motif (subgraph)")
("prob", po::value<double>(&prob), "Probably to continue examining an edge")
("filename", po::value<string>(&input_filename), "Filename of the input graph")
("repeats", po::value<int>(&n_estimates), "Number of estimates")
;
po::options_description all;
all.add(common);
po::positional_options_description p;
p.add("motif_size", 0).add("prob", 1).add("filename", 2).add("repeats", 3);
po::variables_map vm;
po::store(po::command_line_parser(argc, argv).
options(all).positional(p).run(), vm);
po::notify(vm);
Run Code Online (Sandbox Code Playgroud) python ×5
c++ ×4
boost ×2
stl ×2
amazon-ec2 ×1
bash ×1
bitset ×1
hash ×1
hashset ×1
http ×1
intersection ×1
jobs ×1
jupyter ×1
mosix ×1
numpy ×1
pickle ×1
process ×1
set ×1
setuptools ×1
ssh ×1
ssh-tunnel ×1
startup ×1
static ×1
user-agent ×1
vector ×1