我试图了解分布式计算,并遇到了一个查找大量数字中位数的问题:
假设我们有一大组数字(假设元素数量是N*K),它们不能适合内存(大小为N).我们如何找到这些数据的中位数?假设在存储器上执行的操作是独立的,即我们可以认为每个K机器最多可以处理N个元素.
我认为中位数的中位数可用于此目的.我们可以一次将N个数字加载到内存中.我们O(logN)及时找到该集合的中位数并保存.
然后我们保存所有这些K中位数并找出中位数的中位数.此外O(logK),到目前为止,复杂性一直是O(K*logN + logK).
但这个中位数的中位数只是一个近似的中位数.我认为将它用作获得最佳案例性能的支点是最佳的,但为此我们需要将所有N*K数字拟合到内存中.
现在我们有一个很好的近似支点,我们怎样才能找到集合的实际中位数?
我有一个Python包,我需要安装在/usr/lib/python2.7/dist-packages或任何其他特定目录中.
每当我运行setup.py脚本时,它都会提供以下输出:
root@abc44:~/som_dir/plugins/abc$python setup.py install
running install
running bdist_egg
running egg_info
writing abcNewPlugin.egg-info/PKG-INFO
writing top-level names to abcNewPlugin.egg-info/top_level.txt
writing dependency_links to abcNewPlugin.egg-info/dependency_links.txt
writing entry points to abcNewPlugin.egg-info/entry_points.txt
reading manifest file 'abcNewPlugin.egg-info/SOURCES.txt'
writing manifest file 'abcNewPlugin.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
warning: install_lib: 'build/lib.linux-x86_64-2.7' does not exist -- no Python modules to install
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/EGG-INFO
installing scripts to build/bdist.linux-x86_64/egg/EGG-INFO/scripts
running install_scripts
running build_scripts
creating build/bdist.linux-x86_64/egg/EGG-INFO/scripts
copying build/scripts-2.7/abc_plugin.py -> build/bdist.linux-x86_64/egg/EGG-INFO/scripts
changing mode of build/bdist.linux-x86_64/egg/EGG-INFO/scripts/abc_plugin.py …Run Code Online (Sandbox Code Playgroud) 作为多线程和互斥体的新手,我正在浏览维基百科.我遇到了这个部分:
通过创建链接列表,CAS可用于实现任何共享数据结构的无等待互斥,其中每个节点表示要执行的所需操作.然后,在插入新节点期间,CAS用于更改链表中的指针.只有一个过程可以在CAS中成功; 尝试同时添加节点的所有其他进程将不得不再次尝试.然后,每个进程可以保留数据结构的本地副本,并且在遍历链接列表时,可以从其本地副本上的列表执行每个操作.
现在我理解CAS的基本概念,其中我们基本上使用原子操作将值与预定值进行比较,如果匹配则我们交换它们.但我无法遵循"所需操作链表"的含义?为什么所有流程都遵循相同的链接操作列表?
我是使用 tc 命令的新手。
我正在编写一个测试脚本来为接口添加延迟。这是使用python和fabric api完成的
所以脚本将执行以下操作:
sudo tc qdisc 添加 dev eth1 root netem 延迟
在脚本结束时我们会做
sudo tc qdisc del dev eth1 root netem
但同时我想在最开始的时候确保系统上没有现有的 tc 控制。所以我想在整个脚本开始之前运行删除命令。但是如果没有完成 tc 配置,这会给我一个错误。
abc@abcvmm:~$ sudo tc qdisc del dev eth1 root netem
RTNETLINK 答案:无效参数
有没有办法仅在完成现有 tc 配置时删除配置的接口,否则不会。
我想使用 HTTPERF 对文件上传到远程服务器进行基准测试
我知道有一个 wsesslog 选项,我可以在其中提供表单数据的条目。
但我也可以发送文件的发布请求吗?
就像是:
httperf --hog --server 127.0.0.1 --port 5000
--add-header="Content-Type: application/x-www-form-urlencoded\n" --wsesslog=150,0,httperf_content
httperf_content 文件包含
/ method=POST contents="file=PATH_TO_FILE"
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个脚本,该脚本必须对某些bash命令进行大量调用,解析并处理输出,最后给出一些输出。
我正在使用subprocess.Popen和subprocess.call
如果我理解正确,那么这些方法将产生一个bah进程,运行命令,获取输出,然后终止该进程。
有没有办法让bash进程在后台连续运行,然后python调用可以直接进入该进程?这就像是bash作为服务器运行,而python调用了它。
我觉得这会优化通话,因为没有bash流程设置和拆卸。还是没有任何性能优势?
python ×2
algorithm ×1
bash ×1
benchmarking ×1
c++ ×1
httperf ×1
median ×1
optimization ×1
setuptools ×1
subprocess ×1
traffic ×1