使用python服务进行多处理

时间:2016-07-28 21:31:38

标签: python pywin32

我有一个使用pywin32创建的Windows服务。在服务内部我使用yapsy插件创建了一个基于插件的系统。其中一个插件是在磁盘空间不足时删除视频。

我正在使用python多处理来加快删除视频的过程。没有服务测试时,设置工作正常。但是当服务运行时,_deleteFiles()方法没有运行。我确保多处理设置是正确的,一切正常,直到我调用方法。我使用python 2.7.11和多处理的forking.py文件似乎是最新的。

我的代码中设置多处理的部分如下所示.multiprocLib()类只是多处理的包装器,可以更容易地设置进程,并且我已经在很多地方成功使用它。

我在这里遗漏了什么吗?我在很多地方都尝试过multprocessing.freeze_support(),但没有一个工作过。

mproc = multiprocLib()
mproc.setNumProcesses(8)
rlock = mproc.RLock()
deleteList = mproc.list()
deleteDict = mproc.dict()
parent, child = mproc.Pipe()
mproc.setTarget(_deleteFiles, (child, deleteList,deleteDict))
mproc.process(parent, videoList, False)


def _deleteFiles(child, deleteList,deleteDict):
# if __debug:
#     fileList = child
# else:
fileList = child.recv()
for file in fileList:
    # if not __debug:
    try:
        os.remove(file)
    except:
        exinfo = sys.exc_info()
        stackTrace = ''.join(traceback.format_tb(exinfo[2]))
        deleteDict[file] = stackTrace
    else:
        deleteList.append(file)

0 个答案:

没有答案