다중 처리 기능의 출력을 저장하기 위해 다중 처리 공유 메모리를 사용할 수 없습니다.

텡 방 웨이

웹에서 정보를 추출하여 Python 목록에 저장하는 프로그램을 작성 중입니다. 다중 처리 방법을 사용하여 정보를 추출하고 추가 처리를 위해 출력 목록을 저장하는 데 문제가 있습니다. 이것은 내 코드입니다.

import multiprocessing

def web_scrape1():
    #some codes to scrape the web output 3 lists
    global sub_list1a, sub_list2a, sub_list3a
    sub_list1a.append(scrape1)
    sub_list2a.append(scrape2)
    sub_list3a.append(scrape3)

def web_scrape2():
    #some codes to scrape the web output 3 lists
    global sub_list1b, sub_list2b, sub_list3b
    sub_list1b.append(scrape1)
    sub_list2b.append(scrape2)
    sub_list3b.append(scrape3)

def master_scraper():
    ws1 = multiprocessing.Process(target=web_scrape1)
    ws2 = multiprocessing.Process(target=web_scrape2)

    ws1.start()
    ws2.start()
    ws1.join()
    ws2.join()

    global master_list1, master_list2, master_list3

    master_list1 = sub_list1a + sub_list1b
    master_list2 = sub_list2a + sub_list2b
    master_list3 = sub_list3a + sub_list3b

def postprocessing():
    #some codes to process the lists
    print(master_list1) # Output []
    print(master_list2) # Output []
    print(master_list3) # Output []

def main():
  master_scraper()
  postprocessing()

if __name__ == '__main__':
  multiprocessing.freeze_support()
  main()

위 코드의 출력은 간단합니다.

[]
[]
[]

, and 함수 multiprocessing.Array('b', sub_list1a)내부에서 이와 같은 것을 사용하여 모든 목록을 공유 메모리에 할당하려고 시도 했지만 목록은 여전히 .web_scape1()master_scraper()main()[]

여기에서 도움을 받기를 바랍니다.

마르코스

에서는 multiprocessing프로세스가 자체 메모리 영역을 보유하기 때문에 전역 변수를 사용할 수 없으므로 각 프로세스 내부의 변경 사항은 독립적입니다. 수행하려는 작업을 수행하는 가장 간단한 방법은 Manager프로세스 간 통신에 a 사용하는 것입니다. output_container각 함수에 액세스하고 수정할 수 있도록 생성 하고 전달할 수 있습니다 . 예를 들면 :

import multiprocessing as mp


def web_scrape1(output_container: list):
    sample_text = 'value from web_scrape1'
    output_container.append(sample_text)


def web_scrape2(output_container: list):
    sample_text = 'value from web_scrape2'
    output_container.append(sample_text)


if __name__ == "__main__":
    output_container = mp.Manager().list()

    worker1 = mp.Process(target=web_scrape1, args=(output_container,))
    worker2 = mp.Process(target=web_scrape2, args=(output_container,))

    worker1.start()
    worker2.start()

    worker1.join()
    worker2.join()

    print(output_container)
    >>> ['value from web_scrape1', 'value from web_scrape2']

문서 에서 자세한 정보를 찾을 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

하위 처리 기능을 사용한 다중 처리

분류에서Dev

Laravel 5.4-컨트롤러에 데이터를 저장하기 위해 정적 배열을 사용할 수 없습니다. 어떻게 처리할까요?

분류에서Dev

다중 처리를 사용하여 공유 메모리를 할당 할 때 가짜 메모리 부족 오류

분류에서Dev

이중성-저장 위치를 사용할 수 없으며 Google을 기다리고 있습니다.

분류에서Dev

Python 다중 처리 공유 메모리; 1 회 쓰기, 다중 읽기

분류에서Dev

파이프 기능을 처리 할 수 없습니다.

분류에서Dev

파이썬 다중 처리 대기열이 공유 메모리에 없습니다.

분류에서Dev

다중성을 제거하기위한 full_join 출력의 후 처리

분류에서Dev

처리중인 크기와 다른 해상도로 스케치를 저장할 수 있습니까?

분류에서Dev

공유 메모리 개체의 크기를 정의 할 수 없습니다.

분류에서Dev

belongs_to 모델에 중첩 된 폼을 사용할 수 없습니다-어떻게 처리해야합니까?

분류에서Dev

다중 처리를 사용할 때 하위 프로세스가 인수를 존중하지 않습니다.

분류에서Dev

Python 다중 처리에서 공유 메모리 변수 전달

분류에서Dev

Python Sklearn "ValueError : 분류 메트릭은 다중 클래스 다중 출력 및 이진 대상의 혼합을 처리 할 수 없습니다."오류

분류에서Dev

중복 기호로 인해 clang 오류를 처리하는 방법을 알 수 없습니다.

분류에서Dev

pyqt5 python 3.8의 다중 처리 공유 메모리

분류에서Dev

처리기를 사용해 보았지만 '기호를 확인할 수 없습니다'처리기 '라고 표시되었습니다.

분류에서Dev

다양한 유형의 메서드 호출을 수행하기 위해 다양한 유형의 명령어를 처리하기위한 디자인 패턴

분류에서Dev

처리 중 Android 모드를 찾을 수 없습니다.

분류에서Dev

다중 (키워드) 인수를 사용하는 Python의 다중 처리

분류에서Dev

Linux ACL을 사용하여 Samba 공유의 하위 디렉토리를 탐색 할 수 없습니다.

분류에서Dev

일반 처리기를 사용하여 파일을 다운로드 할 수 없습니다.

분류에서Dev

다중 처리 동기화

분류에서Dev

다른 명령 처리기에서 명령 처리기 호출을 어떻게 모의 할 수 있습니까?

분류에서Dev

왜 그물코 HTTP 처리기를 공유 할 수 있습니다?

분류에서Dev

파이썬 다중 처리의 공유 변수

분류에서Dev

유전 프로그래밍을 위해 DEAP에서 다중 처리 사용

분류에서Dev

여러 기준을 일치시키는 코드는 불일치 / 중단을 처리 할 수 없습니다.

분류에서Dev

파이썬의 다중 처리는 메모리를 해제하지 않습니다

Related 관련 기사

  1. 1

    하위 처리 기능을 사용한 다중 처리

  2. 2

    Laravel 5.4-컨트롤러에 데이터를 저장하기 위해 정적 배열을 사용할 수 없습니다. 어떻게 처리할까요?

  3. 3

    다중 처리를 사용하여 공유 메모리를 할당 할 때 가짜 메모리 부족 오류

  4. 4

    이중성-저장 위치를 사용할 수 없으며 Google을 기다리고 있습니다.

  5. 5

    Python 다중 처리 공유 메모리; 1 회 쓰기, 다중 읽기

  6. 6

    파이프 기능을 처리 할 수 없습니다.

  7. 7

    파이썬 다중 처리 대기열이 공유 메모리에 없습니다.

  8. 8

    다중성을 제거하기위한 full_join 출력의 후 처리

  9. 9

    처리중인 크기와 다른 해상도로 스케치를 저장할 수 있습니까?

  10. 10

    공유 메모리 개체의 크기를 정의 할 수 없습니다.

  11. 11

    belongs_to 모델에 중첩 된 폼을 사용할 수 없습니다-어떻게 처리해야합니까?

  12. 12

    다중 처리를 사용할 때 하위 프로세스가 인수를 존중하지 않습니다.

  13. 13

    Python 다중 처리에서 공유 메모리 변수 전달

  14. 14

    Python Sklearn "ValueError : 분류 메트릭은 다중 클래스 다중 출력 및 이진 대상의 혼합을 처리 할 수 없습니다."오류

  15. 15

    중복 기호로 인해 clang 오류를 처리하는 방법을 알 수 없습니다.

  16. 16

    pyqt5 python 3.8의 다중 처리 공유 메모리

  17. 17

    처리기를 사용해 보았지만 '기호를 확인할 수 없습니다'처리기 '라고 표시되었습니다.

  18. 18

    다양한 유형의 메서드 호출을 수행하기 위해 다양한 유형의 명령어를 처리하기위한 디자인 패턴

  19. 19

    처리 중 Android 모드를 찾을 수 없습니다.

  20. 20

    다중 (키워드) 인수를 사용하는 Python의 다중 처리

  21. 21

    Linux ACL을 사용하여 Samba 공유의 하위 디렉토리를 탐색 할 수 없습니다.

  22. 22

    일반 처리기를 사용하여 파일을 다운로드 할 수 없습니다.

  23. 23

    다중 처리 동기화

  24. 24

    다른 명령 처리기에서 명령 처리기 호출을 어떻게 모의 할 수 있습니까?

  25. 25

    왜 그물코 HTTP 처리기를 공유 할 수 있습니다?

  26. 26

    파이썬 다중 처리의 공유 변수

  27. 27

    유전 프로그래밍을 위해 DEAP에서 다중 처리 사용

  28. 28

    여러 기준을 일치시키는 코드는 불일치 / 중단을 처리 할 수 없습니다.

  29. 29

    파이썬의 다중 처리는 메모리를 해제하지 않습니다

뜨겁다태그

보관