14. [pywin32] SetProcess... 관련 함수
1. SetPriorityClass(handle, dwPriorityClass)
프로세스의 우선순위 클래스를 설정하는 함수입니다.
인자로는 handle : PyHANDLE, dwPriorityClass : int 가 있습니다.
handle: 프로세스의 핸들값입니다.
dwPriorityClass: 우선순위 클래스로 이전 포스트의 GetPriorityClass 함수를 참조하실 수 있습니다.
[pywin32/win32process] - 13. [pywin32] GetProcess... 관련 함수 - 3
2. SetProcessAffinityMask(hProcess, mask)
CPU 선호도(Affinity)를 설정하는 함수입니다.
인자로는 hProcess : PyHANDLE, mask : int 가 있습니다.
hProcess: 프로세스의 핸들값입니다.
mask: 설정할 CPU 값으로 비트마스크 형식으로 되어있습니다. (CPU0=1, CPU1=2, CPU2=4...., 만약 CPU0,1 둘다 설정하기 위해서는 1+2=3 값을 넣으면 됩니다.) 작업관리자에서 CPU 갯수를 확인할 수 있습니다.
- SetThreadAffinityMask 함수를 참조하실 수 있습니다.
[pywin32/win32process] - 7. [pywin32] SetThreadAffinityMask & SetThreadIdealProcessor 함수
7. [pywin32] SetThreadAffinityMask & SetThreadIdealProcessor 함수
1. int = SetThreadAffinityMask(hThread, ThreadAffinityMask ) 쓰레드의 CPU 선호도를 설정합니다. 선호도란 멀티 프로세서의 경우 어떤 CPU에 작업을 할당할 지를 말합니다. 위의 이미지는 작업관리자 > 프로..
ssjune.tistory.com
3. SetProcessPriorityBoost(Process, DisablePriorityBoost)
프로세스의 동적인 우선순위 레벨 상승이 가능하도록 설정하는 함수입니다.
인자로는 Process: PyHANDLE, DisablePriorityBoost : boolean가 있습니다.
Thread는 쓰레드의 핸들값입니다.
DisablePriorityBoost는 동적인 우선순위 레벨 상승이 가능하게 하는 값으로 True/False 입니다.
- win32con.TRUE: 동적인 우선순위 레벨 상승을 불가능하게 합니다.
- win32con.FALSE: 동적인 우선순위 레벨 상승을 가능하게 합니다.
값과 의미가 반대인 것에 주의해야 합니다.
4. SetProcessShutdownParameters(Level, Flags)
프로세스의 셧다운 우선순위와 플래그를 설정하는 함수입니다.
인자로는 Level : int, Flags : int 가 있습니다.
Level: 우선순위로 다음의 값을 갖습니다. 응용프로그램의 프로세스는 0x100 - 0x3FF중에서 설정해야 하는 듯 합니다.
값 | 의미 |
0x000 - 0x0FF | 시스템 프로세스가 셧다운 마지막에 종료됨 |
0x100 - 0x1FF | 응용프로그램 프로세스가 셧다운 마지막에 종료됨 |
0x200 - 0x2FF | 응용프로그램 프로세스가 셧다운 중간에 종료됨 |
0x300 - 0x3FF | 응용프로그램 프로세스가 셧다운 처음에 종료됨 |
0x400 - 0x4FF | 시스템 프로세스가 셧다운 처음에 종료됨 |
Flag: 셧다운 플래그로 다음의 값을 갖습니다.
값 | 이름 | 의미 |
0 | - | 기본값 |
1 | win32con.SHUTDOWN_NORETRY | 프로세스를 종료하는데 지정된 시간보다 오래 걸릴 시 재시도 대화상자를 띄위지 않고 프로세스를 종료함 |
5. SetProcessWorkingSetSize(hProcess, MinimumWorkingSetSize, MaximumWorkingSetSize)
프로세스이 워킹 셋의 최소/최대 사이즈를 설정하는 함수입니다.
인자로는 hProcess : PyHANDLE, MinimumWorkingSetSize : int, MaximumWorkingSetSize : int 가 있습니다.
hProcess: 프로세스의 핸들값입니다.
MinimumWorkingSetSize: 최소로 설정할 사이즈입니다. (바이트 단위), 설정할 수 있는 최소값은 20page로 만약 1page에 4K(4096 Bytes)라면 최소 81920 Bytes 부터 설정해야 합니다.
MaximumWorkingSetSize: 최대로 설정할 사이즈입니다. (바이트 단위), 최소 13page(53248 Bytes) 이상의 값을 설정해야 하며, 최대 시스템에서 지원하는 최대값에서 512page를 뺀 값까지 설정할 수 있습니다.
만약 MinimumWorkingSetSize와 MaximumWorkingSetSize가 둘다 -1로 설정한다면, 프로세스의 워킹 셋에서 가능한 많은 page를 제거합니다.
import win32process
import win32con
import win32event
prog = "C:/Users/admin/Documents/notepad.exe"
# 프로그램 경로
pinfo = win32process.STARTUPINFO()
pHandle = win32process.CreateProcess(prog, None, None, None, win32con.FALSE, \
win32con.CREATE_NEW_CONSOLE, None, None, pinfo)
win32event.WaitForSingleObject(pHandle[0], 2000)
priorityClass = win32process.GetPriorityClass(pHandle[0])
affinityMask = win32process.GetProcessAffinityMask(pHandle[0])
priorityBoost = win32process.GetProcessPriorityBoost(pHandle[0])
shutdownParam = win32process.GetProcessShutdownParameters()
workingSize = win32process.GetProcessWorkingSetSize(pHandle[0])
print(f"priorityClass : {priorityClass}")
print(f"affinityMask : {affinityMask}")
print(f"priorityBoost : {priorityBoost}")
print(f"shutdownParam : {shutdownParam}")
print(f"workingSize : {workingSize}")
win32process.SetPriorityClass(pHandle[0], win32process.HIGH_PRIORITY_CLASS)
win32process.SetProcessAffinityMask(pHandle[0], 0x01)
win32process.SetProcessPriorityBoost(pHandle[0], win32con.TRUE)
win32process.SetProcessShutdownParameters(0x100, win32con.SHUTDOWN_NORETRY)
win32process.SetProcessWorkingSetSize(pHandle[0], -1, -1)
priorityClass = win32process.GetPriorityClass(pHandle[0])
affinityMask = win32process.GetProcessAffinityMask(pHandle[0])
priorityBoost = win32process.GetProcessPriorityBoost(pHandle[0])
shutdownParam = win32process.GetProcessShutdownParameters()
workingSize = win32process.GetProcessWorkingSetSize(pHandle[0])
print(f"new priorityClass : {priorityClass}")
print(f"new affinityMask : {affinityMask}")
print(f"new priorityBoost : {priorityBoost}")
print(f"new shutdownParam : {shutdownParam}")
print(f"new workingSize : {workingSize}")
위의 코드를 실행한 결과입니다.
'pywin32 > win32process' 카테고리의 다른 글
13. [pywin32] GetProcess... 관련 함수 - 3 (0) | 2020.12.29 |
---|---|
12. [pywin32] GetProcess... 관련 함수 - 2 (0) | 2020.12.28 |
11. [pywin32] EnumProcess 관련 함수 (0) | 2020.12.27 |
10. [pywin32] GetProcess... 관련 함수 - 1 (0) | 2020.12.26 |
9. [pywin32] ExitProcess & TerminateProcee 및 관련 함수 (0) | 2020.12.25 |