我有6节课
我主要是为每个类创建一个对象
我想并行调用每个对象的eachObject.processFiles()
processFiles方法通过读取对象文件来处理它们,处理数据,并将其保存在持久对象中。每次processFiles调用大约需要5分钟。如果按顺序进行,则主要需要大约30分钟
我现在正在按顺序执行,但我希望在最短的cpu时间内加快6个对象处理其文件的速度。所有的对象都是相互独立的,我认为多线程方式会很有效。但是我以前没有做过多线程。所以我想知道这样做是否安全,以及怎么做。一段代码片段会有所帮助
我怎么能同时做呢
class system(object):
def __init__(self, leNameList):
self.files = fileNameList
def processFiles(self):
self.feeds= self.readFiles()
self.processFeeds()
class A(system):
def processFeeds(self):
""" process the feed
in A way """
class B(system):
def processFeeds(self):
""" process the feed
in B way """
def main():
aObj = A(fileList)
bObj = B(fileList2)
aObj.processFiles()
bObj.processFiles()
使用^{} 模块
在这里,我用示例数据填充了您的代码,以便您可以开箱测试这个解决方案,但其要点是:
multiprocessing.Pool().map
执行不同进程中的函数,并按顺序返回每个结果李>这样做的缺点是
multiprocessing
有时使用起来有点挑剔,而且您必须确保通过流程边界的所有内容都可以被pickle处理还有一件事要检查你的代码是文件列表。如果它们有许多共同的文件,则应该将文件读取过程分开,并确保不必读取同一个文件两次
相关问题 更多 >
编程相关推荐