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

리눅스에서는 특정 명령의 실행 시간을 측정하는 명령으로 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


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

[WSL] 윈도우 서브시스템 리눅스에서 네트워크 드라이브 접근 방법

지난번에 윈도우 서브시스템으로 우분투 설치하는 것을 살펴보았습니다.그 때 네트워크 드라이브로 연결된 것을 접근하지 못했었는데,이번에 알게 되어 공유합니다.맥북프로에서 특정 폴더를 위와 같이 공유합니다. 윈도우에서 보이게 하기 위해서, "Options" 에서,SMB 선택을 합니다.그러면 패러렐즈에 설치해 놓은 윈도우에서,위와 같이 네트워크 드라이... » 내용보기

[텔레그램] proxy 이용

미국 출장에서 특정 네트워크에서 텔레그램이 막혀서 어떻게 이용할 수 있을까 구글링을 해 보았더니 PROXY를 이용해서 우회하면 사용할 수 있다는 것이었습니다.PROXY 중에서도 텔레그램은 SOCKS5 또는 MTPRO 프로토콜을 사용하더군요.암튼 이것 저것 구글링 사이트를 찾아 연결을 시도해 보다가 결국 발견한 것은mtpro.xyz 이라는 사이트... » 내용보기

[Python] subprocess.Popen 으로 stdout, stderr non-blocking 으로 결과 가져오기

다음과 같은 파이썬 샘플이 있습니다. (po_callee.py)import sysimport timeimport datetimeimport argparse################################################################################def do(args):    for i... » 내용보기

[Docker] Swarm stack for compose

현재 컨테이너의 de facto 표준은 Kubernetes 라고 누구나 이야기를 합니다.그런데 몇년 전만 하더라도 Swarm, Mesos 등과 같이 어떤 것이 표준이 될지잘 모르는 상화이었죠.그런데 말입니다, docker로 개발을 할때 다음과 같은 수순을 밟습니다.1)  Presentation, BackEnd logic, Data Access ... » 내용보기

구글애드텍스트