【发布时间】:2017-04-01 10:15:13
【问题描述】:
我遇到了多处理问题。代码包含在下面。代码可以按预期执行,但是当取消注释self.queue = multiprocessing.Queue()时,这个程序会立即退出,似乎子进程无法启动成功。
我不知道发生了什么。有人可以帮我吗?非常感谢!
import multiprocessing
import time
class Test:
def __init__(self):
self.pool = multiprocessing.Pool(1)
#self.queue = multiprocessing.Queue()
def subprocess(self):
for i in range(10):
print("Running")
time.sleep(1)
print("Subprocess Completed")
def start(self):
self.pool.apply_async(func=self.subprocess)
print("Subprocess has been started")
self.pool.close()
self.pool.join()
def __getstate__(self):
self_dict = self.__dict__.copy()
del self_dict['pool']
return self_dict
def __setstate__(self, state):
self.__dict__.update(state)
if __name__ == '__main__':
test = Test()
test.start()
【问题讨论】:
-
任何
traceback,如果有,请将其添加到您的问题中。 -
@stovfl 抱歉,我在 Pycharm 控制台中看不到任何回溯信息。如果取消注释该行,该程序将立即完成而无需等待其子进程。
标签: python python-3.x multiprocessing