python pathos的酸洗问题

2024-10-03 06:24:34 发布

您现在位置:Python中文网/ 问答频道 /正文

import pathos.multiprocessing as mp
class Model_Output_File():
    """
    Class to read Model Output files
    """
    def __init__(self, ftype = ''):
        """
        Constructor
        """
        # Create a sqlite database in the analysis directory
        self.db_name = 'sqlite:///' + constants.anly_dir + os.sep + ftype + '_' + '.db'
        self.engine  = create_engine(self.db_name)
        self.ftype   = ftype

    def parse_DGN(self, fl):
        df      = pandas.read_csv(...)
        df.to_sql(self.db_name, self.engine, if_exists='append')

    def collect_epic_output(self, fls):
        pool = mp.ProcessingPool(4)
        if(self.ftype == 'DGN'):
            pool.map(self.parse_DGN, fls)
        else:
            logging.info( 'Wrong file type')

if __name__ == '__main__':
    list_fls = fnmatch.filter(...)
    obj = Model_Output_File(ftype = 'DGN')
    obj.collect_model_output(list_fls)

在上面的代码中,我使用pathos多处理库来避免类的python多处理问题。但是,我得到一个酸洗错误:

^{pr2}$

我怎么解决这个问题?在


Tags: tonameselfoutputdbmodelifdef
2条回答

我也遇到了同样的问题。神秘的是相同的代码在一台win7机器上工作,而不是在另一台win7上工作! 然后我检查了版本,结果发现dill和multiprocess在这台死机上的版本要高出1个版本。我把dill和multiprocess的版本分别降到0.2.5和0.70.4。这就解决了问题! 希望有帮助

我是pathos的作者。你得到了一个cPickle.PicklingError你不应该用pathos得到这个。确保你安装了{{CD4}},如果你有,那你就有C++编译器。您可以通过导入dill,并在类内执行dill.copy(self.parse_DGN)操作,或在外部使用类的实例来检查是否存在酸洗错误。如果可以,那么您可能有一些安装问题,其中pathos正在查找python标准库multiprocessing。如果是这样,那么您可能需要安装一个编译器…例如Microsoft Visual Studio社区。请参见:github.com/mmckerns/tuthpc。请确保在安装MS编译器后重新生成multiprocess。在

相关问题 更多 >