【发布时间】:2022-01-10 16:22:37
【问题描述】:
我正在使用 Windows
import multiprocessing
import os
class BaseModule(multiprocessing.Process):
def __init__(self):
print("Initialize time pid: ",os.getpid())
multiprocessing.Process.__init__(self)
super().__init__()
def get_pid(self):
print("After new process pid: ",os.getpid())
def run(self):
self.get_pid()
if __name__ == '__main__':
process = BaseModule()
process.start()
输出:
Initialize time pid: 22148
After new process pid: 21244
在这里,同一个对象得到两个不同的 pid 我需要 使用多处理(相同的 pid)创建完整的对象并在新进程中运行?
【问题讨论】:
-
multiprocessing.Process.__init__(self)和super().__init__()是多余的。摆脱其中之一。除此之外,这是预期的行为:进程对象首先在主进程“初始化时间”中创建,然后在“新进程之后”在单独的进程中执行。当对象被复制到新进程时,__init__不会被调用。如果您需要一个在另一端创建时被调用的方法,您需要覆盖__new__或__getstate__和__setstate__(请注意,这仅在使用“spawn”上下文时有效,而不是与“fork”一起使用")
标签: python multiprocessing python-multiprocessing