q_mapper.py 文件源码

python
阅读 30 收藏 0 点赞 0 评论 0

项目:cadee 作者: kamerlinlab 项目源码 文件源码
def q_map(self):
        # Creates threads that call q_mapsingle() on each directory (replica)
        # returns a tuple (mapped_directories, failed_directories)

        self._mapped = []
        self._failed = []

        trs = []
        for md in self._map_dirs:
            num = threading.activeCount() - 1     #    -1: one thread is the main thread
            while num == self._nthreads:
                time.sleep(0.3)
                num = threading.activeCount() - 1     # -1:    one thread is the main thread
            if num < self._nthreads:
                trs.append( _Mapthread(self, md) )
                trs[-1].start()

        # wait for threads to finish, save their response
        for t in trs:
            while t.isAlive():
                t.join(1.0)
            if t.error:
                self._failed.append( (t.path, t.error) )
            else:
                self._mapped.append( t.path )

        if not self._mapped:
            errstr=""
            for m,er in self._failed:
                errstr += "%s -> %s\n" % (os.path.relpath(m), er)
            raise QMappingError("All %s directories failed to map!\n%s" % ( len(self.get_mapdirs()), errstr) )

        return (self._mapped, self._failed)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号