Python 在构造函数中创建子进程
我有一个类,它在构造函数中创建一个新进程,如下所示Python 在构造函数中创建子进程,python,multiprocessing,python-multiprocessing,Python,Multiprocessing,Python Multiprocessing,我有一个类,它在构造函数中创建一个新进程,如下所示 class data_reader(): def __init__(self,paths_list,queue_limit = 1,parallel = True): print 'data reader constructor' self.paths = paths_list self.count = len(paths_list) self.async = async self.dict = {};
class data_reader():
def __init__(self,paths_list,queue_limit = 1,parallel = True):
print 'data reader constructor'
self.paths = paths_list
self.count = len(paths_list)
self.async = async
self.dict = {};
self.lock = multiprocessing.Lock()
self.queue = multiprocessing.Queue(queue_limit)
if parallel:
self.child = multiprocessing.Process(target = self.load_paths,args = (self.paths,self.queue,))
self.child.daemon = True
self.child.start()
print 'child started'
else:
self.load_paths(self.paths,self.queue)
此类有另一个函数get_next()从队列中获取数据
def get_next():
return self.queue.get()
这个函数被称为formmain,如下所示
data_train = data_reader(train_paths_list)
data_valid = data_reader(valid_paths_list)
data_test = data_reader(test_paths_list)
现在,在正常情况下,每当我运行这段代码时,它都可以正常工作,并且随着对象被销毁,子进程也会终止。当我从另一个程序(spearmint)将这个main作为子进程运行时,问题就出现了。构造函数的调用永远不会返回,但会创建一个新的子级。在其他情况下,会创建子项,但
'data reader constructor'
未打印,并且控件未返回到父级
是否存在一些我无法理解的限制
另外,我正在考虑使用套接字编程来避免这种情况。我从进程中继承了我的数据读取器
class data_reader(multiprocessing.Process):
并对我的类进行重构,以覆盖Process类中的run函数。此解决方案通过从main调用start()在给定场景中工作