首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将多进程改为单进程

如何将多进程改为单进程
EN

Stack Overflow用户
提问于 2021-09-14 06:37:43
回答 1查看 43关注 0票数 0

下面是一些代码

如何将当前多进程部件更改为单进程?

代码语言:javascript
复制
import multiprocessing

def process(self):
    if product != 0:
        if self.mlist.check(file_dictionary):
            self.mlist.patch(file_dictionary)
            process = multiprocessing.Process(target = self.mlist.job, args = (file_dictionary, targ))
            self.multiprocess_list.append(process)
            process.start()

def wait(self):
    process_list = self.multiprocess_list
    for i in process_list:
        i.join(2)
EN

回答 1

Stack Overflow用户

发布于 2021-09-23 07:42:33

下一次,请提供一个类似以下的最小可重现示例:

代码语言:javascript
复制
import multiprocessing


def doSomething(k: str, v: int):
    print(f"key={k}, value={v}")


if __name__ == "__main__":
    data = {"a": 1, "b": 2, "c": 3}
    processes = []
    for key, value in data.items():
        process = multiprocessing.Process(target=doSomething, args=(key, value))
        processes.append(process)
    for process in processes:
        process.start()
    for process in processes:
        process.join()

现在,将import multiprocessing替换为

代码语言:javascript
复制
class multiprocessing:  # Fake multiprocessing, not multiprocessing at all
    def __init__(self, target, args):
        self.target = target
        self.args = args

    @staticmethod
    def Process(target, args):
        return multiprocessing(target, args)

    def start(self):
        self.target(*self.args)

    def join(self):
        pass

其思想是您提供完全相同的接口(相同的名称),但不进行多处理。您可以轻松地从多处理切换到多处理。

  • multiprocessing不再是一个库,但class
  • multiprocessing.Process不再是process对象的构造函数,而静态method
  • start()只是调用method
  • join()而不做任何事情,因为它已经同步运行了
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69172921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档