일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- C
- VS Code
- pandas
- 오류
- label
- Visual Studio
- ubuntu
- Selenium
- windows forms
- YOLO
- 컨테이너
- SSH
- C#
- LIST
- C++
- 핑거스타일
- Docker
- 채보
- pip
- 프로그래머스
- OpenCV
- JSON
- 기타 연주
- pytorch
- paramiko
- Linux
- error
- Python
- mysql
- Numpy
- Today
- Total
목록subprocess (2)
기계는 거짓말하지 않는다
아래와 같은 예시 코드에서 import subprocess as sp # 실행 시킬 명령어 command = ["any command..."] proc = sp.Popen(command, stdin=sp.PIPE, stderr=sp.PIPE) while 반복 조건: # 큰 데이터 받음 data = 데이터 IN # write proc.stdin.write(data.tostring()) 반복문을 실행하다가 프로세스가 종료되는 경우가 있다. 한 가지 상황은 이미지를 데이터로 받아 FFMPEG에 raw data로 넘겨줄 때였다. FFMPEG는 stderr에 지속해서 기록하므로 버퍼가 계속 차게 된다. stderr을 사용하지 않거나, 비워주어야 한다. 비우는 방법은 write 후 stderr을 close 하거나 ..
간단한 예이다. Windows에서 실행 한 명령어이며 Linux일 경우 그에 맞는 명령어를 입력한다. os.system 함수는 가장 간단하게 명령어를 호출할 수 있으나 명령어가 완료될 때까지 대기하며, pid 등을 알 수 없다. subprocess 함수는 백그라운드로 실행되며 명령어를 호출 한 process의 pid를 얻거나 명령어가 완료될 때까지 기다릴 수 있다. import os import subprocess os.system("timeout /t 5") process = subprocess.Popen("timeout /t 5", shell=True) process.wait() print("shell True End") process = subprocess.Popen(["timeout", "/t",..