在python中,关于将数据存储到文件

时间:2013-07-13 16:26:04

标签: python

我是编程和学习python 3.x的新手,大约3到4个月。

如今,我正在尝试制作一个程序,以找到一些“魔方”的解决方案。

众所周知,6x6魔方拥有超过200,000,000个解决方案。

因此,数字太大,无法存储在我想要的普通PC内存中

不时将计算和找到的解决方案存储到文件中。

让我们说,我想将解决方案保存到1,000,000时保存到文件中。

简而言之如下:

if len(resultList) == 1000000:
    file = open('{0}x{0} PMS Solutions {1:03}.txt'.format(ansr, fileNum), 'w')
    file.write(resultList)
    file.close()
    resultList = []

然后,在创建文件时,查找新解决方案的过程不起作用。

我的问题:

有没有办法让两个进程同时计算和存储?

1 个答案:

答案 0 :(得分:1)

如果你正在使用python3.3,一种简单而优雅的方式来实现你想要的是使用ThreadPoolExecutor

def save_to_file(data):
    fname = '{0}x{0} PMS Solutions {1:03}.txt'.format(ansr, fileNum)
    with open(fname, 'w') as fout:
        fout.write(data)   # save the list to file in some way

使用它像:

executor = ThreadPoolExecutor(max_workers=2)

# ...

if len(resultList) >= 1000000:
    future = executor.submit(save_to_file, resultList)
    resultList = []

使用3.3之前的python版本中的threading模块可以完成同样的操作 类似的东西:

thread = None

if len(resultList) >= 1000000:
    if thread is not None:
        thread.join()  # finish saving the other solutions first
    thread = threading.Thread(target=save_to_file, args=(resultList,))
    thread.start()
    resultList = []