python - 多处理运行意外的代码块
问题描述
为什么应该只运行一次的部分每次都运行?这有意义吗?将目标函数作为单独的线程运行的正确方法是什么?
代码取自https://pymotw.com/2/multiprocessing/basics.html的一个非常简单的示例
import multiprocessing
print("Starting Main - This should only run ONCE")
def worker1(num):
"""thread worker function"""
print("Worker:", num)
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker1, args=(i,))
jobs.append(p)
print("Starting Process=", i)
p.start()
输出控制台:
[Running] python "e:\Projects\Python-Test\test1.py"
Starting Main - This should only run ONCE
Starting Process= 0
Starting Process= 1
Starting Process= 2
Starting Process= 3
Starting Process= 4
Starting Main - This should only run ONCE # (??????? WHY )
Worker: 1
Starting Main - This should only run ONCE (???????)
Worker: 0
Starting Main - This should only run ONCE
Worker: 4
Starting Main - This should only run ONCE
Worker: 2
Starting Main - This should only run ONCE
Worker: 3
[Done] exited with code=0 in 0.45 seconds
解决方案
推荐阅读
- algorithm - 使用 SSTable 进行基本过滤
- node.js - Pdf 未从 Aws Lambda 返回,但在本地工作正常
- mongodb - mongoimport - 云 uri 只允许一个位置参数
- python - 如何在 sympy 中扩展 Symbol 类?
- python - 我应该如何让我的 python PRNG 正常工作?
- reactjs - 异步 redux 调用后 React 中的条件重定向
- arrays - 如何在 Swift 中将 .filter 用于带有结构的数组?
- mysql - Loopback api 错误 401 需要授权
- google-cloud-platform - 谷歌云语音转文本,如何默默抛出 UnknownValueError?
- python - 处理对 github 的可执行文件依赖