python - Python multiprocessing is not calling function
问题描述
I am trying to understand how multiprocessing works in Python. Here is a simple code which is not calling the function as I expected it would.
import time
import multiprocessing
def do_something():
print('Sleep')
time.sleep(1)
print('Wake up')
start = time.perf_counter()
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)')
In Jupyter Notebook, after executing I am getting following output:
Finished in 0.2 second(s)
I though it would be like something like this:
Sleep
Sleep
Wake up
Wake up
Finished in 0.2 second(s)
What am I missing?
解决方案
您应该检查“编程指南”(https://docs.python.org/3/library/multiprocessing.html#multiprocessing-programming)以找出您需要以下内容的原因:
if __name__ == '__main__' :
在使用多处理的脚本中保护。由于您的笔记本中没有它,因此它无法正常工作。
推荐阅读
- angular5 - 登录后如何调用构造函数和ngOnInit
- typescript - 类型脚本如何向声明的对象添加新属性?
- sql - 来自 sql-ex 的 SQL 练习问题
- javascript - 如何验证复选框最大检查/选择
- security - 如果没有任何注册,是否需要令牌验证?
- android - android.graphics.drawable.AdaptiveIconDrawable 无法转换为 android.graphics.drawable.BitmapDrawable 错误
- bazel - 如何减少 bazel 打印?
- python - 对数据框多索引级别和按列进行排序
- php - 使用 PHP 进行表单验证不起作用
- python - 在python中使用原始套接字发送IP数据包