假设我们将一个数字拆分为不同的域:例如:100 拆分为:[0, 25] [25, 50] [50, 75] [75, 100]。然后,我们将这 4 个列表中的每一个发送到 4 个单独的进程之一进行计算,然后将答案重新组合为数字 100 的单个分割单元。我们根据进程的需要连续迭代此多次' 作为 1000 个数字的单位,分为类似于 [0, 25] [25, 50] [50, 75] [75, 100] 的单独域。如果我们必须关闭进程以使它们充当为得到答案而进行处理的单个组单元,则会出现效率问题。由于 Windows 与 Unix 相比运行进程很糟糕,我们被迫使用“spawn”方法而不是 fork。生成方法在生成过程中速度很慢,所以我想为什么不保持该过程“打开并将数据传入和传出它们,而不需要为并行过程的每个迭代组打开和关闭它们”。下面的示例代码将执行此操作。它将保持进程作为类消费者打开,类消费者将不断地使用 run() (在 while 循环中)请求带有 .get() 可连接队列的 next_task :
import multiprocessing
class Consumer(multiprocessing.Process):
def __init__(self, task_queue, result_queue):
multiprocessing.Process.__init__(self)
self.task_queue = task_queue
self.result_queue = result_queue
def run(self):
while True:
next_task = self.task_queue.get()
if next_task is None:
# Poison pill shutdown of .get() loop with break
self.task_queue.task_done()
break
answer = next_task() …Run Code Online (Sandbox Code Playgroud) 我在为我的项目配置 python 解释器时遇到问题。几天前它运行得很好,突然间我无法为任何项目配置任何内容。我现在的做法和之前的方法一模一样,不管是成功还是失败。每次我尝试配置项目解释器时,它都会在底部显示一个红旗并显示:无法保存设置:请指定不同的 SDK 名称。
有没有人有什么建议?我尝试设置虚拟环境,但也不起作用。我知道这可能是愚蠢的事情。