Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/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:将大整数写入文件的最快方法_Python_String_File Io_Integer_Output - Fatal编程技术网

Python:将大整数写入文件的最快方法

Python:将大整数写入文件的最快方法,python,string,file-io,integer,output,Python,String,File Io,Integer,Output,我想把一个非常大的整数从Python写到一个文本文件,大约10到1000兆字节 以下选项具有相同的速度,不幸的是,两者都非常慢: import time import pickle num = 17**(10**7) t1=time.time() pickle.dump( num , open( "save2.p", "wb" ) ) t2=time.time() print(str(t2-t1)) t3=time.time() file = open("testfile2.txt","w

我想把一个非常大的整数从Python写到一个文本文件,大约10到1000兆字节

以下选项具有相同的速度,不幸的是,两者都非常慢:

import time
import pickle

num = 17**(10**7)

t1=time.time()
pickle.dump( num , open( "save2.p", "wb" ) )
t2=time.time()
print(str(t2-t1))

t3=time.time()
file = open("testfile2.txt","w") 
file.write(str(num))
file.close()
t4=time.time()
print(str(t4-t3))
(当然,
num
的值只是另一个大整数的占位符)

我的问题:

  • 有没有一种更快的方法来编写具有十进制数字的人类可读文件
  • 如果不是,我如何在没有人类可读性的情况下写得更快

  • 谁能帮忙?

    这需要人类可读吗?是的,请人类可读:)我必须问,为什么它必须是人类可读的?你真的要检查那些数字吗?转换为
    str
    ,即人类可读的字符串,需要花费很长时间。如果你使用原始二进制表示法,速度会快得多。除非你能对它进行pickle处理,否则你会被str(int)卡住,如果这太慢,那是因为写一个千兆字节实际上需要时间。有没有办法避免二进制数,并从一开始就以10为基数计算?如果是,我们可以避免转换。。。