Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 酸洗效率_Python 2.7_Igraph - Fatal编程技术网

Python 2.7 酸洗效率

Python 2.7 酸洗效率,python-2.7,igraph,Python 2.7,Igraph,我是igraph的初学者 我有一个60000个节点和900K条边的图形数据。我可以使用pythonigraph成功地创建图形并写入磁盘。我的机器有3G内存 当我以graphml格式将图形写入磁盘时,内存使用率约为19%;使用write_pickle时,使用率上升到50%,所需时间明显增加 igraph这种行为背后的原因是什么?我什么时候应该和什么时候不应该使用pickle格式 请对此加以说明。Pickle是Python标准库中的序列化程序。在我看来,这些猜测很有可能: 当igraph启动时,他们

我是igraph的初学者

我有一个60000个节点和900K条边的图形数据。我可以使用pythonigraph成功地创建图形并写入磁盘。我的机器有3G内存

当我以graphml格式将图形写入磁盘时,内存使用率约为19%;使用write_pickle时,使用率上升到50%,所需时间明显增加

igraph这种行为背后的原因是什么?我什么时候应该和什么时候不应该使用pickle格式


请对此加以说明。

Pickle是Python标准库中的序列化程序。在我看来,这些猜测很有可能:

当igraph启动时,他们不想创建自己的文件格式,所以他们使用pickle。现在保存图形的默认行为不是pickle,而是自己的格式


在graphml中使用igraph保存对象时,库知道什么是重要的,什么不是重要的,并且将使用最少的内存。然而,Pickle可以将许多Python对象序列化为字符串,并将每个对象保存在列表或字典中,以防重复使用或具有循环引用

Pickling是一种通用格式,用于存储任意对象,这些对象可能引用其他对象,而这些对象反过来也可能引用其他对象。因此,当Python处理一个对象时,它必须跟踪它以前“看到”并序列化的所有对象,以避免陷入无限循环。这可能就是酸洗速度较慢(并且占用更多内存)的原因

使用pickle的优点是,pickle表示将保留每个图形、顶点或边属性的确切Python类型(前提是您使用支持pickle的类型)。GraphML不会保留确切的类型,因为从Python类型到GraphML类型没有明确的映射;例如,在GraphML表示中,所有数值属性都将转换为双精度,而不管原始属性是Python整数、长整数还是浮点数