我是编程和学习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 = []
然后,在创建文件时,查找新解决方案的过程不起作用。
我的问题:
有没有办法让两个进程同时计算和存储?
答案 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 = []