Я только что обнаружил, что узким местом сценария Python является построчная запись небуферизованного текстового файла в наш QNAP NAS. См. Прикрепленный фрагмент кода Python. Это обязательно так медленно или что-то не так с нашей настройкой QNAP / сети?
# local SSD: 2 seconds
with open(r'C:\Daten\numbers.txt', 'w') as f:
# local SSD with buffering: 2 seconds
with open(r'C:\Daten\numbers.txt', 'w', buffering=2**20) as f:
# Share on QNAP NAS: ### 36 ... 61 seconds! ###
with open(r'I:\numbers.txt', 'w') as f:
# Share on QNAP NAS with buffering: 2 ... 3 seconds
with open(r'I:\numbers.txt', 'w', buffering=2**20) as f:
for i in range(1000000):
print(i, file=f)
любой небольшой ввод-вывод будет дороже по сравнению с более крупной передачей. В этом случае ситуацию усугубляют:
Хотя вы можете несколько повысить производительность, настроив поведение сервера NFS / CIFS / SMB, я настоятельно рекомендую вам избегать общего небуферизованного ввода-вывода в пользу буферизованного ввода-вывода + явные точки сброса (если этого требует ваше приложение).