Python:_MainThread'对象没有属性' _state'

时间:2015-10-23 21:00:09

标签: python multithreading python-multiprocessing

Hey Guys我正在创建一个接收用户请求的应用程序。服务器端的主要类是Controller。我在init期间生成一个线程,它一直在监听来自客户端的请求(我需要在这里生成一个线程。)

收到请求后,我会查看请求的类型并调用一个函数来处理它。

在该功能中,我想创建多个进程以有效地利用我的8个核心。

以下是代码: -

class Controller(app_manager.RyuApp):
    OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]

    def __init__(self, *args, **kwargs):
        self.datapaths={}
        self.monitor_thread=hub.spawn(self._monitor)
        super(Controller, self).__init__( *args, **kwargs)

    def _monitor(self):
        global connstream   
        while True:
            #Get Connection from client

            data = connstream.read(15000)
            data=eval(data)
            print "Recieved a request from the client:-",data
            for key,value in data.iteritems():
                type=int(key)
                request=value
                if type==4:
                    self.get_route(type,request,connstream)


    def get_route(self,type,request,connection):
            global get_route_result
            cities=request['Cities']
            number_of_cities=request['Number_of_Cities']
            city_count=0
            processes=[]
            pool = mp.Pool(processes=8)
            for city,destination_ip in cities.iteritems():
                 args=(type,destination_ip)
                 processes.append(args)
                 city_count=city_count+1
                 if city_count==number_of_cities:
                      break 
            pool.map(self.get_route_process,processes)  




    def get_route_process(self,HOST,destination):
          #Do Something

但我得到的错误是: -

Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in    __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 325, in _handle_workers
while thread._state == RUN or (pool._cache and thread._state != TERMINATE):
AttributeError: '_MainThread' object has no attribute '_state'

简而言之,我创建了一个线程,它试图创建多个进程,但代码失败了。

0 个答案:

没有答案