Windows Python将variables传递给池进程

我有一个Python 2.7程序,可以转换有声读物文件。 由于有一堆(100-300)的FLAC文件,我有一个有i7处理器的shiny的新电脑,我正在开发一个多处理版本的程序。

我使用glob获取文件列表,然后创build一个元组列表…

fis = [] for fi in globlist: fis.append[(fi, author, title, year, genre)] 

我使用pool.map(convert,fis)和程序工作。 方式比旧的一个一个版本更快。

有没有办法在主函数中创build一个元组(作者,标题,年份,stream派),并使其可用于转换function? 字典也可以。 如果我使用全局variables,这是行不通的,因为我猜想subprocess不能从Windows的父进程inheritance任何东西。 我只想在文件列表中没有几百个拷贝,或者浪费时间在每个subprocess中重新创build它。

谢谢。

您可以尝试使用Pool()的初始化函数。 比如它可能是这样的:

 import multiprocessing as mp def initializer(myvariable): global myvariable if __name__ == "__main__": fis = [] for fi in globlist: fis.append[(fi, author, title, year, genre)] with mp.Pool(initializer=initializer, initargs=fis) as pool: pool.map(convert, fis) 

现在转换应该能够看到一个名为myvariable的变量,这将是本例中的FIS列表。 这应该工作的原因(我没有测试代码,因为我手头没有安装Windows python)是每个派生进程运行初始化程序。 希望能帮助到你。