2014-09-02 110 views
-2
#coding:utf-8 

import sys 
import time 
import os 
import multiprocessing 

class Worker(object): 
    def __init__(self): 
     self.progress = 0 
     self.task_info = None 

    def init(self): 
     pass 

    def status(self): 
     pass 

    def set_task_info(self, task_info): 
     self.task_info = task_info 

    def run(self, worker_status_meta_dict): 
     print multiprocessing.current_process() 
     print "process is %d" % self.progress 
     while self.progress < 5: 
      self.progress = self.progress +1 
      worker_status_meta_dict['state'] = 0 
      worker_status_meta_dict['status'] = "running" 
      time.sleep(2) 
     worker_status_meta_dict['state'] = 1 
     worker_status_meta_dict['status'] = "succeeded" 
     print "bavscan worker finished..."  

if __name__ == "__main__": 
    worker = Worker() 
    worker_process_dict = multiprocessing.Manager().dict() 
    process = multiprocessing.Process(target=Worker.run, args=(worker, worker_process_dict)) 
    process.start() 
    time.sleep(60) 

這是一個簡單的python多進程演示。 主進程使用multiprocessing.Process調用子進程中的Worker.run方法。 當它在wondows 7中運行時,主進程將啓動兩個子進程。python多進程計數

enter image description

+0

你的問題是什麼? – greole 2014-09-02 09:28:40

+0

我只有一個子進程,但有兩個子進程。 – billow 2014-09-02 09:46:42

+0

您提供的輸出與您的代碼不一致 - 必須有「」過程......「行。運行您提供的代碼並顯示輸出。 – 2014-09-02 11:16:58

回答

0

我覺得在這個問題 「Python27 \ LIB \ multiprocessing__init __。PY」

def Manager(): 
    ''' 
    Returns a manager associated with a running server process 

    The managers methods such as `Lock()`, `Condition()` and `Queue()` 
    can be used to create shared objects. 
    ''' 
    from multiprocessing.managers import SyncManager 
    m = SyncManager() 
    m.start() 
    return m 

m.start()將勞克一個子進程來啓動管理器。