Я запускаю сценарий на школьном компьютере, используя модуль multiprocessing
. Я часто сериализую данные. Это можно резюмировать кодом ниже:
import multiprocessing as mp
import time, pickle
def simulation(j):
data = []
for k in range(10):
data.append(k)
time.sleep(1)
file = open('data%d.pkl'%j, 'wb')
pickle.dump(data, file)
file.close()
if __name__ == '__main__':
processes = []
processes.append(mp.Process(target = simulation, args = (1,) ))
processes.append(mp.Process(target = simulation, args = (2,) ))
for process in processes:
process.start()
for process in processes:
process.join()
Поэтому, когда я на самом деле запускаю свой код для многих других симуляций и того, что я представляю как более интенсивные разнообразные задачи, я получаю следующую ошибку: IOError: [Errno 5] Input/output error
обычно предшествует file.open(...)
или file.close()
.
Мои вопросы:
- Как исправить эту ошибку в моем скрипте?
- Что означает эта ошибка для новичка в Python? Ссылки приветствуются.
Еще несколько заметок о моей процедуре:
- Вместо того, чтобы установить для атрибута многопроцессорности
daemon
значениеTrue
, я использую screen для запуска сценария, а затем отсоединяюсь. Это также позволяет мне отключаться, не беспокоясь об остановке моего сценария. - Это похоже на связанный вопрос о печати с использованием модуля
subprocess
. Как я уже сказал, я явно не использовал демона, поэтому не уверен, что это поможет. - Обычно это происходит после работы в течение дня и происходит в разных процессах в разное время.
nohup
вместоscreen
, чтобы уменьшить количество «слоев» между мной и ядром. Грубо говоря, он сказал, что это может увеличить шансы того, что эта ошибка не возникнет. Впрочем, до сих пор... - person Charlie   schedule 03.10.2014