윈도우에서 fork()함수를 이용해서 자식프로세스를 생성하려고 하니 에러가 뜬다.
https://www.sysnet.pe.kr/2/0/12811
위의 블로그에서 해답을 찾았다.
윈도우 운영체제는 "프로세스 복제"라는 개념이 없다고 한다.
해결법은 윈도우 환경에서 wsl을 이용하면 우분투 운영체제를 사용할 수 있는데, 우분투 안에서 파이썬을 사용하는 것이다.
pycharm에서 wsl을 연동 후에 파이썬 인터프리터를 우분투 안에 있는 파이썬 경로로 설정해주면 된다고 한다.
https://www.sysnet.pe.kr/2/0/12789
문제 발생
위의 블로그 처럼 pycharm에서 wsl을 연동하려고 하니 아래 이미지와 같은 wsl 탭이 뜨지 않는것이다.
아래 동영상의 댓글에서 해답을 찾을 수 있었다. 이제 pycharm에서 wsl을 연동하려면 professional 계정을 사용해야한다고 한다.
https://www.youtube.com/watch?v=-gIZkGhr9RE
그렇다면... vscode로 다시 설정해보자
vscode에서 wsl2 개발환경 만들기
https://www.nasa1515.com/visual-studio-code-wsl/
os.fork()를 사용한 코드에서 실행 잘되는 것을 확인했다.
아래 코드는 1개의 부모프로세스에서 2개의 자식 프로세스를 생성하고, wait()를 이용해 부모 프로세스가 자식 프로세스가 종료할 때까지 대기한다.
import os
def make_child_process():
print("Started")
pid1 = os.fork()
if pid1 == 0: # 자식 프로세스에서 코드가 실행 되는 경우
print(" 자식 프로세스1 실행 ")
print("Child Process pid : ", os.getpid(), " ppid : ", os.getppid())
exit(0)
pid2 = os.fork()
if pid2 == 0:
print(" 자식 프로세스2 실행 ")
print("Child Process pid : ", os.getpid(), " ppid : ", os.getppid())
exit(0)
else:
# parent process
print(" 부모 프로세스 실행 ")
print("Parent Process pid : ", os.getpid(), " ppid : ", os.getppid())
os.wait()
print("부모 프로세스 종료")
print("END")
make_child_process()
이후에 할 일은
1. wsl2로 접속한 우분투 리눅스에 외부 접속을 허용해주기.
2. cuda 설치
3. 내 로컬 컴퓨터에 있는 gpu를 우분투에서 사용가능하게 설정하기
4. pytorch 설치하기
'코딩 > 파이썬' 카테고리의 다른 글
json 파일 csv로 변환하기 (json to csv convert) (0) | 2022.12.13 |
---|---|
파이썬 sorted() 람다(lambda), key, x[0],x[1] (0) | 2022.02.24 |
python에서 .HEIC 확장자 .jpg로 변경하기 (0) | 2021.10.22 |