multiprocessing.Process() 刚刚停止工作
Posted
技术标签:
【中文标题】multiprocessing.Process() 刚刚停止工作【英文标题】:multiprocessing.Process() just stopped working 【发布时间】:2020-03-19 16:45:23 【问题描述】:我在 Spyder 上自学 Python 中的多线程处理,并且正在研究一些相对简单的示例,但突然停止工作。回到以前有效的一些更简单的例子,现在它们似乎没有那么好用了。我想不出我能做些什么来让他们停止工作。以下是我的代码:
import time
import multiprocessing
start = time.perf_counter()
def do_something():
print('Sleeping 1 second...')
time.sleep(1)
print('Done Sleeping...')
p1 = multiprocessing.Process(target = do_something)
p2 = multiprocessing.Process(target = do_something)
p1.start()
p2.start()
p1.join()
p2.join()
finish = time.perf_counter()
print(f'Finished in round(finish - start, 2) second(s)')
它似乎只是像中间部分一样运行:
p1 = multiprocessing.Process(target = do_something)
p2 = multiprocessing.Process(target = do_something)
p1.start()
p2.start()
p1.join()
p2.join()
没有吗?
编辑
唯一的输出是
Finished in 0.64 second(s)
没有错误信息。
【问题讨论】:
停止工作是什么意思?报错? 它就像多处理代码不存在一样运行,输出“在 0.64 秒内完成” 【参考方案1】:您需要阅读error
并按照说明进行操作!
RuntimeError:
An attempt has been made to start a new process before the
current process has finished its bootstrapping phase.
This probably means that you are not using fork to start your
child processes and you have forgotten to use the proper idiom
in the main module:
if __name__ == '__main__':
freeze_support()
...
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce an executable.
请运行以下代码:
import multiprocessing
def worker(num):
"""Returns the string of interest"""
return "worker %d" % num
def main():
pool = multiprocessing.Pool(4)
results = pool.map(worker, range(10))
pool.close()
pool.join()
for result in results:
# prints the result string in the main process
print(result)
if __name__ == '__main__':
# Better protect your main function when you use multiprocessing
main()
【讨论】:
谢谢,我从来没有遇到任何错误,它刚刚完成,就像多处理代码没有说“在 0.64 秒内完成”一样 @ChristopherEll 你是通过 Windows 运行它吗?如是。所以IDLE
。请确认您是否以python script.py
运行它
是的,我在 Spyder 上的 Windows 上运行
@ChristopherEll ***.com/questions/18204782/…
谢谢 αԋɱҽԃ αмєяιcαη 我想我还是有问题 我尝试将 if name == 'main' 放在程序的各个点但仍然得到几乎相同的结果。以上是关于multiprocessing.Process() 刚刚停止工作的主要内容,如果未能解决你的问题,请参考以下文章
Python 多进程编程之multiprocessing--Process
multiprocessing.Process() 刚刚停止工作
python多进程——multiprocessing.Process