openpyxl はスレッドセーフですか? あるスレッドがワークシートを変更し、別のスレッドが定期的に保存することを望んでいます。変更操作と保存操作の周りにロックオブジェクトを追加する必要があるのか 、それともopenpyxlにすでに組み込まれているのか疑問に思っていました. ドキュメントにも openpyxl のスレッドに関する以前の質問もありませんでした。
あなたの答えを読んだ後、私は次のテストを実行しました:
import threading
import random
import time
from openpyxl import Workbook
wb = Workbook()
class openpyxlwriting ( threading.Thread):
def run ( self ):
global wb
ws = wb.get_active_sheet()
c = 1
for a in range(100):
for b in range(10000):
ws.cell(column = a,row=b).value = c
c += 1
print "row ",a
class openpyxlsaving ( threading.Thread):
def run ( self ):
global wb
for a in range(1000):
wb.save('test.xlsx')
print "saved"
openpyxlwriting().start()
time.sleep(1)
openpyxlsaving ().start()
これにより、次のトラスバックが得られました: trasback.png