さて、データをメモリに書き込む関数があります。データを設定されたサイズ(この場合は1 GB)に設定してから、ファイルに切り捨て/ダンプし、書き込むデータがなくなるまでこのプロセスを続行しようとしています。現在、制限に達して切り捨てられ、関数の終了方法に応じて次のエラーのいずれかで失敗します。
Traceback (most recent call last):
File "<pyshell#192>", line 1, in <module>
cart_for(10,'1234567890')
File "<pyshell#191>", line 8, in cart_for
x.write(''.join(p))
ValueError: I/O operation on closed file
私の機能は次のとおりです。
x = StringIO()
def cart_for(n, seq):
b = 8
a = 100000
size_max = 1073741824
for m in range(n, b, -1):
a = a - 1
for p in itertools.product(seq, repeat=m-1):
x.write(''.join(p))
x.write('\n')
x.seek(0, os.SEEK_END)
size = x.tell()
if size > size_max:
with open('C:/out/' + ran(8,string.ascii_letters) + '.txt', 'w') as handle:
handle.write(x.getvalue())
x.close()
x
関数を次のように終了した場合:
x = StringIO()
それ以外の:
x
エラーは次のとおりです。
Traceback (most recent call last):
File "<pyshell#189>", line 1, in <module>
cart_for(10, '1234567890')
File "<pyshell#188>", line 8, in cart_for
x.write(''.join(p))
UnboundLocalError: local variable 'x' referenced before assignment
このプロセスを完了する方法について何かアイデアはありますか?参考までに、メモリのスペースが不足しないように、メモリをディスクに頻繁に切り捨てて、関数が完了するまで実行を継続できるようにしたいと考えている方も多いと思います。これを完了するために静的変数によって定義された確率変数名を作成することは可能ですか(それが理にかなっている場合)?許してください私はPythonを初めて使用します。