我正在开发一个可能需要多个网络工作者的项目,我需要知道同时进行多个操作是否可以负担得起(如超过4或8个工作者)以及cpu和ram中的成本是多少启动它们让它们挥之不去.
我一直在谷歌搜索和搜索,但我没有找到他们的CPU和内存开销的任何指标.我已经找到了一些性能基准,但这不是我感兴趣的.
任何人都可以指向一个至少给出近似值的规范或研究吗?我需要至少使用一些球场值,而不是假设我从Process Explorer看到的任何内容都是准确或可靠的.
编辑 - 似乎人们得到了错误的印象.我不是在寻求有关如何解决问题的建议,而是询问有关Web工作者开销的技术信息来源(如果存在的话).
我想通过节点运行 shell 命令并捕获标准输出的结果。我的脚本在 OSX 上运行良好,但在 Ubuntu 上运行不正常。
我已将问题和脚本简化为以下节点脚本:
var execSync = require('child_process').execSync,
result = execSync('echo "hello world" >> /dev/stdout');
// Do something with result
Run Code Online (Sandbox Code Playgroud)
结果是:
/bin/sh: 1: 无法创建 /dev/stdout: 没有这样的设备或地址
/dev/stdout与/dev/fd/1execSync('echo ...', {shell : '/bin/bash'})就像我说的,上面的问题被简化了。真正的脚本接受应该写入结果的文件的名称作为参数,因此我需要通过提供对 stdout 流作为文件描述符的访问来解决这个问题,即/dev/stdout.
如何通过节点执行命令,同时让命令访问其自己的标准输出流?
PEP 236明确指出所有future_statements必须出现在模块的顶部附近,只允许在它们之前使用注释,文档字符串等.
我理解这不是一个有争议的编程实践 - 它是规则而且很清楚.但是,我不能谷歌自己回答为什么当你没有把你的future_statement位置放在最顶层时(而不是警告),为什么决定是一个错误而不是违反推荐的做法.
是因为这样,导入自己导入的名称版本的模块future_statement能够覆盖它们,从而确保它们能正常工作吗?是否要保持某种强大的代码清晰度,以便在__future__导入被意外忽略的情况下,由于潜在的灾难而不会破坏正确的编码实践?PEP对此没有启发,我无法找到任何导致找出原因.
一些开源项目明确指出,为了在Windows上编译,它们需要一个微软编译器(通常也是特定版本,因为后一版本不兼容或将拒绝编译旧代码).
因为它似乎很荒谬,我认为,因为是可以为Windows编译源码编译器,微软编译器会为需要任何根本性的任务,我假定这是因为这些项目使用API调用来库(如MSVCRT*. dll)由于某种原因,mingw-gcc,clang和其他windows编译器端口无法编译.
我对这些要求的理解很浅,因为我对编译代码的经验主要来自linux,这让我很担心,因为获得微软编译器并非易事.获得它们的唯一方法是通过microsoft的visual c ++的快速版本,即便如此,最新的版本将完全拒绝安装在像我这样的旧winxp机器上,目前唯一可用的版本是vc ++ express2010,这需要注册从试用软件变成免费软件(即使那时我还不清楚它是否有用或者它需要什么 - 也许操作系统挂钩到"调试"和其他干扰?).
1)我的问题是,这些项目是否依赖于微软编译器,因为建立了这些仅限于微软的库(显然,化石编译器无法做到)?
如果原因是构建脚本或预处理器指令,那似乎是荒谬的,因为这些可以相对容易地移植.
2)此外,即使我避免使用任何msvcrt/.net /等,也有可能.调用,我仍然可以发现自己需要一个微软编译器来编译本机Windows软件(假设没有使用执行这些调用的库)?
3)我可以简单地使用clang和一些小部件库来制作本机Windows软件吗?
4)我可以修改项目的源代码,使其不依赖于微软编译器吗?
(好吧,这是4个问题,对不起,这对我来说很难清楚表达).
我遇到了一个批处理文件(portableshell.bat来自草莓Perl的便携版)使用#,我无法理解为什么.我在网上搜索过,但似乎没有提及这种用法.我需要模仿批处理文件的功能,但我很谨慎,不知道它究竟做了什么.
这里的目的是什么#:
set drive=%~dp0
set drivep=%drive%
if #%drive:~-1%# == #\# set drivep=%drive:~0,-1%
Run Code Online (Sandbox Code Playgroud)
和这里:
if not #%1# == ## "%drivep%\perl\bin\perl.exe" %* & goto END
Run Code Online (Sandbox Code Playgroud)
(这是整个文件的pastebin,供参考)
我想使用 git 作为备份和记录我在桌面上使用的软件的配置文件的更改历史记录的方法。这将是本地安装了 git 的本地存储库。
然而我不确定这些:
是否可以将文件添加到存储库,就好像它位于与真实路径不同的路径中一样?
我担心的是,如果我天真地添加文件,通过将它们复制到存储库并更新存储库,我最终会为每个文件使用双倍的空间。虽然它不会占用太多空间,但我仍然更喜欢更干净的解决方案。我已经调查过
git-add,git-mv但git-filter-branch他们似乎没有为此提供一个干净的解决方案。add和机制都mv可以用来完成这个任务,但并不能真正解决复制文件的问题。filter-branch对于这项任务来说,锤子似乎太大了。
添加文件后是否可以更改文件路径?
git-filter-branch似乎能够做到这一点,但我不确定副作用。
假设 git 无法满足我明确需要的功能,符号链接或硬链接是否可以避免复制文件的需要?这可以跨平台工作吗?或者 git 在不同平台上处理链接的方式不同吗?
2017 年编辑 - 接受了我得到的答案,因为现在我更好地了解了 git,我意识到没有比复制文件或在祖父母目录中拥有 git 存储库更好的解决方案了。这样做的不优雅意味着复制文件是最佳解决方案,而符号链接/硬链接与此问题无关。这些评论和答案可能对寻找类似但不相同的东西的人有用,所以我鼓励检查这些内容。
windows ×2
backup ×1
bash ×1
batch-file ×1
browser ×1
c ×1
c++ ×1
git ×1
hardlink ×1
javascript ×1
linux ×1
node.js ×1
overhead ×1
pep ×1
pep8 ×1
python ×1
python-2.7 ×1
sh ×1
symlink ×1
web-worker ×1