[Windows] PowerShell 로 virtual env 활성화 및 명령 수행 시간 탐지 Develop Tip

리눅스에서는 특정 명령의 실행 시간을 측정하는 명령으로 time 명령이 있습니다.

time 다음에 일반적이 명령을 주면 해당 명령이 걸린 시간을 재서 알려줍니다.
위의 예에서는 3초의 쉬고 결과를 알려주는 3.003초가 실제로 걸렸네요.

이제 어떤 python virtual env에서 pip list 를 한 시간을 제고 싶으면,

(py3) toor@UD1804:~$ time pip list
Package       Version
------------- -------
asn1crypto    0.24.0 
cryptography  2.1.4  
enum34        1.1.6  
idna          2.6    
ipaddress     1.0.17 
keyring       10.6.0 
keyrings.alt  3.0    
pip           9.0.1  
pycrypto      2.6.1  
pygobject     3.26.1 
pyxdg         0.25   
SecretStorage 2.3.1  
setuptools    39.0.1 
six           1.11.0 
wheel         0.30.0 

real 0m0.427s
user 0m0.384s
sys 0m0.044s


이것을 윈도우에서 해 보고 싶습니다.

일반 CMD.EXE 창 말고 파워쉘을 이용해 보겠습니다.

python.exe -m venv C:\work\py3

이라고 했을 경우 CMD.exe 에서 해당 venv를 activate 하기 위하여 

py3\Scripts\activate.bat
를 실행하면 됩니다.

하지만, 파워쉘을 뛰워서는
py3\Scripts\activate.ps1
를 실행하면 됩니다.

그런데 위와 같이 ps1을 돌렸는데도,

PS C:\Windows\system32> C:\work\py3\Scripts\Activate.ps1
C:\work\py3\Scripts\Activate.ps1 : File C:\work\py3\Scripts\Activate.ps1 cannot be loaded because running scripts is
disabled on this system. For more information, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ C:\work\py3\Scripts\Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

위와 같이 오류가 발생할 경우,

PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y

위에서 처럼, Set-ExecutionPolicy RemoteSigned 를 해 주면 됩니다.

PS C:\Windows\system32> C:\work\py3\Scripts\Activate.ps1
(py3) PS C:\Windows\system32>

그러면 잘 적용됩니다.

이제 간단한 time 함수를 파워쉘에서 만들어봅니다.

function time($block) {
    $sw = [Diagnostics.Stopwatch]::StartNew()
    &$block
    $sw.Stop()
    $sw.Elapsed
}

그리고 나면 다음과 같이 
잘 적용되는 것을 알 수 있습니다.

(py3) PS C:\Windows\system32> time { sleep 3 }


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 3
Milliseconds      : 14
Ticks             : 30146943
TotalDays         : 3.48922951388889E-05
TotalHours        : 0.000837415083333333
TotalMinutes      : 0.050244905
TotalSeconds      : 3.0146943
TotalMilliseconds : 3014.6943


또한 pip 명령을 해 봅니다.

(py3) PS C:\Windows\system32> time { pip list }
Package    Version
---------- -------
pip        19.0.3
setuptools 40.8.0
You are using pip version 19.0.3, however version 19.1.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 1
Milliseconds      : 53
Ticks             : 10531420
TotalDays         : 1.21891435185185E-05
TotalHours        : 0.000292539444444444
TotalMinutes      : 0.0175523666666667
TotalSeconds      : 1.053142
TotalMilliseconds : 1053.142


어느 분께는 도움이 되셨기를 ..

핑백

덧글

댓글 입력 영역

구글애드텍스트