下面是一些代码
如何将当前多进程部件更改为单进程?
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)发布于 2021-09-23 07:42:33
下一次,请提供一个类似以下的最小可重现示例:
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替换为
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不再是一个库,但classmultiprocessing.Process不再是process对象的构造函数,而静态methodstart()只是调用methodjoin()而不做任何事情,因为它已经同步运行了https://stackoverflow.com/questions/69172921
复制相似问题