以下代码并行化for循环.
import networkx as nx;
import numpy as np;
from joblib import Parallel, delayed;
import multiprocessing;
def core_func(repeat_index, G, numpy_arrary_2D):
for u in G.nodes():
numpy_arrary_2D[repeat_index][u] = 2;
return;
if __name__ == "__main__":
G = nx.erdos_renyi_graph(100000,0.99);
nRepeat = 5000;
numpy_array = np.zeros([nRepeat,G.number_of_nodes()]);
Parallel(n_jobs=4)(delayed(core_func)(repeat_index, G, numpy_array) for repeat_index in range(nRepeat));
print(np.mean(numpy_array));
Run Code Online (Sandbox Code Playgroud)
可以看出,要打印的期望值是2.但是,当我在集群(多核,共享内存)上运行我的代码时,它返回0.0.
我认为问题是每个工作者都创建自己的numpy_array对象副本,并且不更新在main函数中创建的副本.如何修改代码numpy_array以便更新numpy数组?
我们可以使用以下工具搜索Windows 7或更高版本的文件:(我没有图像上传特权.我的意思是Windows文件资源管理器中的右上角区域.)
当我使用"*.m"搜索MATLAB文件时,它不仅返回*.m文件,还返回*.mp3,*.mp4文件.有没有办法专门显示*.m文件?
谢谢!
该图有大约100个节点,社区数量从5到20不等.有没有办法绘制图形,使得同一社区的节点彼此接近?
我试图为不同的社区分配不同的颜色,但这在我的应用程序中不能很好地工作.
我正在使用python 2.7.12和newtorkx-1.11
我使用的是Ubuntu系统。要在启动时运行 MATLAB 脚本,我可以输入matlab -nodesktop -r "run ./my_program.m".
我怎样才能在Octave上实现相同的功能,比如octave --no-gui -some_command?
我需要vector<unique<TNode>>用nullptrs 初始化a .这篇文章中的方法太复杂了.我的情况很特殊,因为我只需将其初始化为nullptr.我怎样才能实现它?
我知道我可以使用一个for循环到push_back一个nullptr各一次.有优雅的方式吗?
BTW,make_unqiue对我的编译器不起作用.
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
struct TNode {
//char ch;
bool isWord;
vector<unique_ptr<TNode> > children;
TNode(): isWord(false), children(26,nullptr) {}
};
int main()
{
TNode rt;
return 0;
}
Run Code Online (Sandbox Code Playgroud)