Я хотел бы запустить раздел кода, пока выполняется разветвленный подпроцесс (rsync). Это, как я сделал это в моем коде:Python - Выполнение кода до тех пор, пока выполняется подпроцесс
rsync_proc = subprocess.Popen(proc_args, stdout=subprocess.PIPE)
while rsync_proc.poll() == None:
sys.stdout.write('\r'+
rsync_progress_report(source_size_kb, dest, start)),
sys.stdout.flush()
time.sleep(1)
По некоторым причинам, это приводит к тому, Rsync подпроцесс застрять, когда она почти закончена. Цикл while продолжает цикл с rsync_proc.poll()
, возвращая None
. Когда я запускаю этот же вызов rsync без кода цикла while, он заканчивается без проблем.
Заранее спасибо.
'None' - одноэлементный; используйте 'is None' вместо' == None'. – jfs
Спасибо! Не могли бы вы объяснить короткую разницу? –
'is' сравнивает идентификаторы объектов. '==' - это свойство. Вы можете определить свой собственный собственный класс, который переопределяет метод '__eq__', чтобы его экземпляры были равны (' == ') на« Нет », но только« Нет »-« Нет ». – jfs