본문 바로가기
코딩/파이썬

윈도우에서 파이썬 os.fork()함수 사용하기 - (feat pycharm, vscode)

by anjulia 2023. 10. 12.

윈도우에서 fork()함수를 이용해서 자식프로세스를 생성하려고 하니 에러가 뜬다. 

 

https://www.sysnet.pe.kr/2/0/12811

 

Linux: 44. 윈도우 개발자를 위한 리눅스 fork 동작 방식 설명 (파이썬 코드)

글쓴 사람 정성태 (techsharer at outlook.com) 홈페이지 첨부 파일 부모글 보이기/감추기 (연관된 글이 5개 있습니다.) 윈도우 개발자를 위한 리눅스 fork 동작 방식 설명 (파이썬 코드) fork는 리눅스 전용

www.sysnet.pe.kr

위의 블로그에서 해답을 찾았다. 

 

윈도우 운영체제는 "프로세스 복제"라는 개념이 없다고 한다. 

 

해결법은 윈도우 환경에서 wsl을 이용하면 우분투 운영체제를 사용할 수 있는데, 우분투 안에서 파이썬을 사용하는 것이다.

 

pycharm에서 wsl을 연동 후에 파이썬 인터프리터를 우분투 안에 있는 파이썬 경로로 설정해주면 된다고 한다. 

https://www.sysnet.pe.kr/2/0/12789 

 

개발 환경 구성: 597. PyCharm - 윈도우 환경에서 WSL을 이용해 파이썬 앱 개발/디버깅하는 방법

글쓴 사람 정성태 (techsharer at outlook.com) 홈페이지 첨부 파일 부모글 보이기/감추기 (연관된 글이 3개 있습니다.) PyCharm - 윈도우 환경에서 WSL을 이용해 파이썬 앱 개발/디버깅하는 방법 일단 콘솔

www.sysnet.pe.kr

 

 

문제 발생 

위의 블로그 처럼 pycharm에서 wsl을 연동하려고 하니 아래 이미지와 같은 wsl 탭이 뜨지 않는것이다. 

 

위의 블로그에 나온 사진
내 파이참에서는 wsl 탭이 뜨지 않는다.

아래 동영상의 댓글에서 해답을 찾을 수 있었다. 이제 pycharm에서 wsl을 연동하려면 professional 계정을 사용해야한다고 한다. 

https://www.youtube.com/watch?v=-gIZkGhr9RE 

 

 

그렇다면... vscode로 다시 설정해보자 

 

 

 

 

vscode에서 wsl2 개발환경 만들기 

https://www.nasa1515.com/visual-studio-code-wsl/

 

Visual Studio Code 기반의 WSL 개발 환경 만들기

HOW TO Install WSL??? Window10 -> 11로 넘어오며 Linux 용 Window 하…

www.nasa1515.com

 

 

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 설치하기