다중 처리 풀 실행을 일시 중지하는 방법

영숫자

사용 중 :

def myFunction(arg):
    for i in range(10000):
        pass

from multiprocessing import Pool
pool = Pool(processes=3)
pool.map_async( myFunction, ['first','second','third'] )

사용자가 풀이 시작된 후 주어진 시간에 멀티 프로세싱 풀의 실행을 일시 중지 할 수 있기를 바랍니다. 그런 다음 사용자가 풀의 나머지 항목을 사용하여 일시 중지를 해제 (계속) 할 수 있기를 바랍니다. 그것을 달성하는 방법?

편집하다:

다음은 Blckknght가 게시 한 제안의 실제 구현입니다. 감사합니다 Blckknght!

import multiprocessing
from PyQt4 import QtGui, QtCore


def setup(event):
    global unpaused
    unpaused = event

def myFunction( arg=None):
    unpaused.wait()
    print "Task started...", arg
    for i in range(15000000):
        pass
    print '...task completed.', arg


class MyApp(object):

    def __init__(self):
        super(MyApp, self).__init__()

        app = QtGui.QApplication(sys.argv)
        self.mainWidget = QtGui.QWidget()
        self.mainLayout = QtGui.QVBoxLayout()
        self.mainWidget.setLayout(self.mainLayout)

        self.groupbox = QtGui.QGroupBox()
        self.layout = QtGui.QVBoxLayout()
        self.groupbox.setLayout(self.layout)

        self.pauseButton = QtGui.QPushButton('Pause')
        self.pauseButton.clicked.connect(self.pauseButtonClicked)      
        self.layout.addWidget(self.pauseButton) 

        self.okButton = QtGui.QPushButton('Start Pool')
        self.okButton.clicked.connect(self.startPool) 
        self.layout.addWidget(self.okButton)
        self.layout.addWidget(self.pauseButton)      

        self.mainLayout.addWidget(self.groupbox)
        self.mainWidget.show()
        sys.exit(app.exec_())


    def startPool(self):
        self.event = multiprocessing.Event()
        self.pool=multiprocessing.Pool(1, setup, (self.event,))
        self.result=self.pool.map_async(myFunction, [1,2,3,4,5,6,7,8,9,10])
        self.event.set()
        # self.result.wait()       

    def pauseJob(self):
        self.event.clear()

    def continueJob(self):
        self.event.set()

    def pauseButtonClicked(self):
        if self.pauseButton.text()=='Pause':
            print '\n\t\t ...pausing job...','\n'
            self.pauseButton.setText('Resume')
            self.pauseJob()
        else:
            print '\n\t\t ...resuming job...','\n'
            self.pauseButton.setText('Pause')            
            self.continueJob()

if __name__ == '__main__':
    MyApp()
Blckknght

multiprocessing.Event작업자 함수의 실행을 제어 하기 위해 a를 사용하려는 것 같습니다 . 하나를 만든 다음 initializer풀에 전달한 다음에서 기다릴 수 있습니다 myFunction.

다음은 매초마다 인수를 인쇄하는 워커를 실행하는 예제입니다. 작업자는 clear이벤트를 실행하여 일시 중지 하고 다시 시작하여 다시 시작할 수 있습니다 set.

from time import sleep
import multiprocessing

def setup(event):
    global unpaused
    unpaused = event

def myFunction(arg):
    for i in range(10):
        unpaused.wait()
        print(arg)
        sleep(1)

if __name__ == "__main__":
    event = multiprocessing.Event() # initially unset, so workers will be paused at first
    pool = multiprocessing.Pool(3, setup, (event,))
    result = pool.map_async(myFunction, ["foo", "bar", "baz"])
    event.set()   # unpause workers
    sleep(5)
    event.clear() # pause after five seconds
    sleep(5)
    event.set()   # unpause again after five more seconds
    result.wait() # wait for the rest of the work to be completed

작업자 프로세스는 인쇄해야합니다 "foo", "bar"그리고 "baz"각각의 반복 사이에 일초 지연, 각을 열 번. 작업자는 처음 5 초 후에 일시 중지되고 5 초 후에 다시 시작됩니다. 실제 사용 사례에 따라이 코드를 개선 할 수있는 다양한 방법이있을 수 있지만, 올바른 방향으로 나아가는 데 충분합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

풀 다중 처리 실패

분류에서Dev

파일의 행을 읽는 다중 처리 풀

분류에서Dev

Python 다중 처리 풀 : 현재 실행중인 모든 프로세스를 가져 오는 방법

분류에서Dev

단일 실행을 사용하여 테이블에 다중 삽입을 처리하는 방법

분류에서Dev

다중 처리 풀에서 시작된 프로세스를 나열하는 방법은 무엇입니까?

분류에서Dev

중복 실행을 처리하는 방탄 방법

분류에서Dev

Windows 명령 줄에서 일시 중지 / 중단 키를 누른 후 실행을 다시 시작하는 방법

분류에서Dev

Windows 명령 줄에서 일시 중지 / 중단 키를 누른 후 실행을 다시 시작하는 방법

분류에서Dev

조건이 참일 때 실행중인 프로그램을 중지하고 다시 시작하는 방법

분류에서Dev

실행중인 aria 다운로드를 일시 중지하는 방법

분류에서Dev

실행중인 aria 다운로드를 일시 중지하는 방법

분류에서Dev

런타임 중에 중복 파일을 처리하는 방법

분류에서Dev

10 분마다 실행되는 실행중인 .bat 파일을 중지하는 방법

분류에서Dev

Qt-사용자 입력을 기다리기 위해 프로그램 실행을 일시 중지하는 올바른 방법은 무엇입니까?

분류에서Dev

Python 다중 처리는 분기 될 때 교착 상태에있는 일부 프로세스를 풀지 만 생성 될 때 실행됩니다.

분류에서Dev

ShinyFileChoose 처리가 수행 될 때 파일이 선택 될 때까지 처리를 중지하는 방법

분류에서Dev

페이지로드시 Jquery 실행을 중지하는 방법

분류에서Dev

다시 열 때 iOS 용 Adobe AIR 게임 재실행을 중지하는 방법

분류에서Dev

Excel vba 실행을 수동으로 일시 중지하는 방법

분류에서Dev

Firebase 쿼리 실행을 중지하는 방법 observe (eventType : with :)

분류에서Dev

C #에서 다중 스레딩을 사용하여 일괄 처리를 수행하는 방법

분류에서Dev

Redis를 중지 한 후 셀러리 대기열을 계속 실행 한 다음 나중에 시작하는 방법은 무엇입니까?

분류에서Dev

모든 커밋을 다시 실행하지 않고 동일한 리포지토리에서 두 개의 풀 요청을 제출하는 방법은 무엇입니까?

분류에서Dev

목록 목록을 다중 처리에 전달합니다. 풀이 작동하지 않는 것 같습니다.

분류에서Dev

다중 처리를 사용할 때 풀 맵 작업에 시간 제한을 설정 하시겠습니까?

분류에서Dev

apply_async 풀을 사용하는 Python의 비동기 다중 처리

분류에서Dev

파이썬 다중 처리 풀 시간 초과

분류에서Dev

시간 초과로 다중 처리 스레드 풀 닫기

분류에서Dev

다중 처리 풀을 사용하도록 중첩 루프 Python 코드 변환

Related 관련 기사

  1. 1

    풀 다중 처리 실패

  2. 2

    파일의 행을 읽는 다중 처리 풀

  3. 3

    Python 다중 처리 풀 : 현재 실행중인 모든 프로세스를 가져 오는 방법

  4. 4

    단일 실행을 사용하여 테이블에 다중 삽입을 처리하는 방법

  5. 5

    다중 처리 풀에서 시작된 프로세스를 나열하는 방법은 무엇입니까?

  6. 6

    중복 실행을 처리하는 방탄 방법

  7. 7

    Windows 명령 줄에서 일시 중지 / 중단 키를 누른 후 실행을 다시 시작하는 방법

  8. 8

    Windows 명령 줄에서 일시 중지 / 중단 키를 누른 후 실행을 다시 시작하는 방법

  9. 9

    조건이 참일 때 실행중인 프로그램을 중지하고 다시 시작하는 방법

  10. 10

    실행중인 aria 다운로드를 일시 중지하는 방법

  11. 11

    실행중인 aria 다운로드를 일시 중지하는 방법

  12. 12

    런타임 중에 중복 파일을 처리하는 방법

  13. 13

    10 분마다 실행되는 실행중인 .bat 파일을 중지하는 방법

  14. 14

    Qt-사용자 입력을 기다리기 위해 프로그램 실행을 일시 중지하는 올바른 방법은 무엇입니까?

  15. 15

    Python 다중 처리는 분기 될 때 교착 상태에있는 일부 프로세스를 풀지 만 생성 될 때 실행됩니다.

  16. 16

    ShinyFileChoose 처리가 수행 될 때 파일이 선택 될 때까지 처리를 중지하는 방법

  17. 17

    페이지로드시 Jquery 실행을 중지하는 방법

  18. 18

    다시 열 때 iOS 용 Adobe AIR 게임 재실행을 중지하는 방법

  19. 19

    Excel vba 실행을 수동으로 일시 중지하는 방법

  20. 20

    Firebase 쿼리 실행을 중지하는 방법 observe (eventType : with :)

  21. 21

    C #에서 다중 스레딩을 사용하여 일괄 처리를 수행하는 방법

  22. 22

    Redis를 중지 한 후 셀러리 대기열을 계속 실행 한 다음 나중에 시작하는 방법은 무엇입니까?

  23. 23

    모든 커밋을 다시 실행하지 않고 동일한 리포지토리에서 두 개의 풀 요청을 제출하는 방법은 무엇입니까?

  24. 24

    목록 목록을 다중 처리에 전달합니다. 풀이 작동하지 않는 것 같습니다.

  25. 25

    다중 처리를 사용할 때 풀 맵 작업에 시간 제한을 설정 하시겠습니까?

  26. 26

    apply_async 풀을 사용하는 Python의 비동기 다중 처리

  27. 27

    파이썬 다중 처리 풀 시간 초과

  28. 28

    시간 초과로 다중 처리 스레드 풀 닫기

  29. 29

    다중 처리 풀을 사용하도록 중첩 루프 Python 코드 변환

뜨겁다태그

보관