python subprocess Process 目标函数不会实例化 类
python subprocess Process target function won't instantiate classes
我正在尝试使用 subprocess.Process
并行启动多个操作。我遇到的问题是,如果我尝试在目标函数中实例化 class 的实例,则不会发生任何事情。但是,如果我首先实例化 classes 并将实例传递给目标函数,那么一切正常。这是我正在做的事情的抽象
启动前实例化流程:一切正常
def spawn(my_class_instance):
my_class_instance.launch()
for params in my_list_of_parameters:
an_instance = MyClass(params)
Process(target=spawn, args=(an_instance)).start()
在目标函数内部实例化:不起作用
def spawn(params):
an_instance = MyClass(params)
an_instance.launch()
for params in my_list_of_parameters:
Process(target=spawn, args=(params)).start()
我真的很想了解更多关于 为什么 在目标函数中尝试实例化 classes 不起作用的原因。跟马上调用Process.start()
有关系吗?幕后发生了什么阻止了这种情况?
可能导致此问题的一件事是每个 MyClass.launch()
本身调用 subprocess.Popen(..., shell=False)
,以防这可能是原因。如果是这样,为什么?它仍然在第一种情况下被调用。
谢谢!
这行得通。不过,我可能是你的问题。
from multiprocessing import Process
class MyClass:
def __init__(self, params):
pass
def launch(self):
print "method launch is called"
def spawn(params):
an_instance = MyClass(params)
an_instance.launch()
my_list_of_parameters = ['1', '2']
for params in my_list_of_parameters:
Process(target=spawn, args=(params)).start()
我正在尝试使用 subprocess.Process
并行启动多个操作。我遇到的问题是,如果我尝试在目标函数中实例化 class 的实例,则不会发生任何事情。但是,如果我首先实例化 classes 并将实例传递给目标函数,那么一切正常。这是我正在做的事情的抽象
启动前实例化流程:一切正常
def spawn(my_class_instance):
my_class_instance.launch()
for params in my_list_of_parameters:
an_instance = MyClass(params)
Process(target=spawn, args=(an_instance)).start()
在目标函数内部实例化:不起作用
def spawn(params):
an_instance = MyClass(params)
an_instance.launch()
for params in my_list_of_parameters:
Process(target=spawn, args=(params)).start()
我真的很想了解更多关于 为什么 在目标函数中尝试实例化 classes 不起作用的原因。跟马上调用Process.start()
有关系吗?幕后发生了什么阻止了这种情况?
可能导致此问题的一件事是每个 MyClass.launch()
本身调用 subprocess.Popen(..., shell=False)
,以防这可能是原因。如果是这样,为什么?它仍然在第一种情况下被调用。
谢谢!
这行得通。不过,我可能是你的问题。
from multiprocessing import Process
class MyClass:
def __init__(self, params):
pass
def launch(self):
print "method launch is called"
def spawn(params):
an_instance = MyClass(params)
an_instance.launch()
my_list_of_parameters = ['1', '2']
for params in my_list_of_parameters:
Process(target=spawn, args=(params)).start()