Я осуществил следующий код:Python для потока контура при вызове функции трудоёмким
lines=[]
with open('path_to_file', 'r+') as source:
for line in source:
line = line.replace('\n','').strip()
if line.split()[-1] != 'sent':
# do some operation on line without 'sent' tag
upload(data1.zip)
upload(data2.zip)
do_operation(line)
# tag the line
line += '\tsent'
line += '\n'
# temporary save lines in a list
lines.append(line)
# move position to start of the file
source.seek(0)
# write back lines to the file
source.writelines(lines)
Я вызываю методы загрузки в разделе #do some operation with lines without sent tag
для загрузки данных в облаке. Поскольку данные немного большие (около 1 ГБ), для завершения загрузки требуется некоторое время. В то же время, цикл for идет дальше, чтобы позвонить upload(data2)
? Я получаю ошибки, поскольку я не могу загрузить одновременно.
Если да, то как я могу избежать этого?
EDIT :::
Я изменил функцию загрузки, чтобы вернуть статус, как это сделано после загрузки. Итак, как я могу изменить свой основной цикл, чтобы он подождал после вызова upload(data1.zip)
, а затем переместился на upload(data2.zip)
. Я хочу синхронизировать ..
Один из нас смущен (да, он все еще может быть мной). Вы хотите дождаться возвращаемого значения, но вы не хотите многопроцессорности. Выполнение параллельных операций * - это многопроцессорность. Ожидание результата - это синхронизация, которая является функцией ** join ** выше. Можете ли вы уточнить свои потребности для нас? – Prune
@Prune да его меня кто смущает .. я хочу синхронизировать .. – learnningprogramming