如何在多重处理中改变参数

2024-04-26 15:00:02 发布

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

我想在python的多处理帮助下执行yapsy插件。到目前为止,我有一个工人如下:

def mp_worker(plugin, importer, orgadb, regiondb, ispdb):
    print(" Processs " + plugin.plugin_object.getOrigin + " running.")
    processPlugin(plugin, importer, orgadb, regiondb, ispdb)
    print(" Process " + plugin.plugin_object.getOrigin + " done.")

plugin参数是一个plugin对象。函数processPlugin做了必要的工作,但与问题无关。你知道吗

我的多重处理处理程序就是我卡住的地方:

def mp_handler(plugins, importer, orgadb, regiondb, ispdb):
    pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
    pool.map(mp_worker(???)

我给它一个包含称为plugins的plugin对象的数组,但是显然工人需要不同的插件。如何实现一个池与此?你知道吗

先谢谢你。你知道吗


Tags: 对象插件objectdefmppluginworkerprint
1条回答
网友
1楼 · 发布于 2024-04-26 15:00:02

经过一段时间的测试,如果不是一个yapsy插件类,我发现了它的工作原理:

    def mp_worker(importer, orgadb, regiondb, ispdb, plugin):
        processPlugin(plugin, importer, orgadb, regiondb, ispdb)


    def mp_handler(plugins, importer, orgadb, regiondb, ispdb):
    pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
    func = partial(mp_worker, importer, orgadb, regiondb, ispdb)
    pool.map(func, plugins)
    pool.close()

不管怎样,pickle不能与plugin类一起工作,所以任何想多处理yapsy插件的人也必须看看这个: http://yapsy.sourceforge.net/MultiprocessPluginProxy.html

相关问题 更多 >