Уведомления

Группа в Telegram: @pythonsu

#1 Июль 22, 2008 10:32:42

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

Приоритет запускаемого процесса в Win

Всем спасибо,
нужного добился так

import win32process
CreationFlag = win32process.IDLE_PRIORITY_CLASS
ProcessZipBackup = subprocess.Popen(['7z.exe','a', FileNameArchive, self.FileNameBackup], shell=True, \
stdout=subprocess.PIPE,
creationflags = CreationFlag)



Офлайн

#2 Июль 22, 2008 12:29:34

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Приоритет запускаемого процесса в Win

P.S. Поправьте меня если я ошибаюсь, при использовании start создаются 2 процесса : start и 7z. Мы имеем возможность отследить завершение процесса start, а завершение второго 7z второго никак..
Абсолютно верно, это и есть причина.
нужного добился так
Собственно, я тоже так делал, но у меня были непонятные проблемы с правами запуска под 2003 сервером, по-этому я и менял приоритет у вызываемой программы (точнее не я сам).
Как это сделали - я честно говоря не знаю, - саму программу делал другой человек, он и поменял приоритет по моей просьбе :)
P.S. я из ms sql сервера делаю дамп базы данных в файл, а потом его упаковываю, может как то можно красиво сделать без создания временного файла?
pylzma usage
If you need to compress larger amounts of data, you should use the streaming version of the library. If supports compressing any file-like objects:
>>> from cStringIO import StringIO
>>> fp = StringIO('Hello world!')
>>> c_fp = pylzma.compressfile(fp, eos=1)
>>> compressed = ''
>>> while True:
... tmp = c_fp.read(1)
... if not tmp: break
... compressed += tmp
...
>>> pylzma.decompress(compressed)
'Hello world!'
Using a similar technique, you can decompress large amounts of data without keeping everything in memory:
>>> from cStringIO import StringIO
>>> fp = StringIO(pylzma.compress('Hello world!'))
>>> obj = pylzma.decompressobj()
>>> plain = ''
>>> while True:
... tmp = fp.read(1)
... if not tmp: break
... plain += obj.decompress(tmp)
...
>>> plain += obj.flush()
>>> plain
'Hello world!'
However this only works for streams that contain the End Of Stream marker. You must provide the size of the decompressed data if you don't include the EOS marker:
>>> from cStringIO import StringIO
>>> fp = StringIO(pylzma.compress('Hello world!', eos=0))
>>> obj = pylzma.decompressobj(maxlength=13)
>>> plain = ''
>>> while True:
... tmp = fp.read(1)
... if not tmp: break
... plain += obj.decompress(tmp)
...
>>> plain += obj.flush()
Traceback (most recent call last):
...
ValueError: data error during decompression

>>> obj.reset(maxlength=12)
>>> fp.seek(0)
>>> plain = ''
>>> while True:
... tmp = fp.read(1)
... if not tmp: break
... plain += obj.decompress(tmp)
...
>>> plain += obj.flush()
>>> plain
'Hello world!'
Please note that the compressed data is not compatible to the lzma.exe command line utility! To get compatible data, you can use the following utility function:
>>> import struct
>>> from cStringIO import StringIO

>>> def compress_compatible(data):
... c = pylzma.compressfile(StringIO(data))
... # LZMA header
... result = c.read(5)
... # size of uncompressed data
... result += struct.pack('<Q', len(data))
... # compressed data
... return result + c.read()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version