python - 为什么`multiprocessing.Process.start`会这样?
问题描述
我有一个清单:
mylist = list(range(10))
和一个功能:
def change():
for i, _ in enumerate(mylist):
mylist[i] = 0
当我执行下面的代码时:
multiprocessing.Process(target=change).start()
print(mylist)
print(multiprocessing.active_children())
输出是:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[]
因此,该过程结束,但它不会更改列表的元素,mylist
.
但是当我用线程执行确切的代码时:
threading.Thread(target=change).start()
它确实改变了列表。但在我的上下文中,我特别需要使用进程而不是线程。
此外,如果我打电话multiprocessing.Process.run
而不是multiprocessing.Process.start
,它也“有效”,但它是阻塞的。为什么它会这样工作?
解决方案
推荐阅读
- npm - 秘银依赖不断给本地化电子应用程序带来问题
- sas - 我不断在 SAS 中遇到错误
- c# - 传递 ExecutionContext(流)VS 捕获它?
- json - 为什么我无法在 swift 中使用 JSON 参数再删除一个 CollectionVIew Cell?
- kubernetes - 在 kubernetes 中回退拉取图像指标
- python - Celery - ValueError:端口无法转换为整数值
- javascript - peerjs 调用不调用监听器
- flutter - 启动时颤动桌面(窗口)请求管理员
- android - 运行二进制文件
- python - 如何随机选择列表中不包括一种可能性的项目?