0

我是编程和学习 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 = []

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

我的问题:

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

4

1 回答 1

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 = []

可以threading在 3.3 之前的 python 版本中使用模块来完成相同的操作,例如:

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 = []
于 2013-07-13T16:38:56.393 回答