gpt4 book ai didi

python - 是否可以使用 Python 在 pool.map() 中使用 "static"对 self 的引用?

转载 作者:行者123 更新时间:2023-12-01 01:45:17 25 4
gpt4 key购买 nike

我有一行这样的代码:

pool.map(functools.partial(method_to_run, self), data)

method_to_run 获取数据项,然后使用附加到 self 的对象向服务器发出请求,并使用该对象的实例变量(包含之前设置的身份验证 token )。

我遇到的问题是每个进程似乎都会获取该对象(或self)的新实例,因此该实例没有设置 token ,因此请求失败。

有没有办法在池化进程之间共享自身?

最佳答案

TLDR:您描述的方式 - 不 - 这是不可能的。

每当您 fork 一个进程(即通过创建这些进程的池)时,内存中的所有数据都会复制到 fork 中(即不被引用)。

因此,您对原始有效负载所做的任何更改都不会影响 fork 的副本。

这里有三个选项:

  1. 使用线程池(线程共享内存):https://docs.python.org/3/library/threading.html
  2. 采用 IPC 结构:https://pymotw.com/2/multiprocessing/communication.html
  3. 在创建进程池之前将身份验证 token 分配给 self。这将确保 self 的副本将包含 token 。

关于python - 是否可以使用 Python 在 pool.map() 中使用 "static"对 self 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51431243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com