草庐IT

worker-pool

全部标签

python - 如何命名 multiprocessing.pool 中的进程?

如果我创建一个包含4个工作线程的池并设置它们执行某些任务(使用pool.apply_async(..)),我可以使用从内部访问每个进程的名称multiprocessing.current_process().name,但如何设置父进程的名称(这主要用于日志记录)? 最佳答案 Process.name是justasetter,你可以自由分配给它。池需要initializer争论。这可以是任何可调用的,并且它会在每个子进程启动时被调用一次。您可以将其指向一个函数,该函数将该进程的name属性设置为您想要的任何值。

python - 如何在 keras fit_generator() 中定义 max_queue_size、workers 和 use_multiprocessing?

我正在使用GPU版本的keras在预训练网络上应用迁移学习。我不明白如何定义参数max_queue_size、workers和use_multiprocessing。如果我更改这些参数(主要是为了加快学习速度),我不确定每个时期是否仍然可以看到所有数据。max_queue_size:用于“预缓存”来自生成器的样本的内部训练队列的最大大小问题:这是指在CPU上准备了多少批处理?它与workers有什么关系?如何最佳定义?worker:并行生成批处理的线程数。批处理在CPU上并行计算,并即时传递到GPU以进行神经网络计算问题:如何确定我的CPU可以/应该并行生成多少批处理?use_mult

python - multiprocessing.pool.ApplyResult 的文档在哪里?

multiprocessing.pool.ApplyResult的严格API文档少得吓人(阅读:零)。多处理解释文档谈到了ApplyResult,但没有定义它们。这似乎也适用于multiprocessing.pool.Pool,尽管Python多处理指南似乎更好地涵盖了它。即使是ApplyResulthelp()结果也是微不足道的:|get(self,timeout=None)||ready(self)||successful(self)||wait(self,timeout=None)Get()和Ready()我明白了。这些都很好。我完全不知道wait()是做什么用的,因为你处理一个

python - 多处理中不同 worker 的相同输出

我有一些非常简单的案例,可以将要完成的工作分解并分配给worker。我尝试了来自here的一个非常简单的多处理示例:importmultiprocessingimportnumpyasnpimporttimedefdo_calculation(data):rand=np.random.randint(10)printdata,randtime.sleep(rand)returndata*2if__name__=='__main__':pool_size=multiprocessing.cpu_count()*2pool=multiprocessing.Pool(processes=po

python - 超时后如何中止 multiprocessing.Pool 中的任务?

我正在尝试以这种方式使用python的多处理包:featureClass=[[1000,k,1]forkindrange(start,end,step)]#listofargumentsforfinfeatureClass:pool.apply_async(worker,args=f,callback=collectMyResult)pool.close()pool.join在池的进程中,我想避免等待那些需要超过60秒才能返回结果的进程。这可能吗? 最佳答案 这是一种无需更改worker函数即可执行此操作的方法。需要两个步骤:使用可

python - multiprocessing.Pool 挂起如果 child 导致段错误

我想使用multiprocessing.Pool并行应用一个函数。问题在于,如果一个函数调用触发了一个段错误,则Pool将永远挂起。有人知道我如何制作一个Pool来检测何时发生此类事件并引发错误吗?以下示例显示了如何重现它(需要scikit-learn>0.14)importnumpyasnpfromsklearn.ensembleimportgradient_boostingimporttimefrommultiprocessingimportPoolclassBad(object):tree_=Nonedeffit_one(i):ifi==3:#thiswillsegfaultba

python - 从python多处理模块中的进程池中获取 worker 数

我正在尝试想办法直接从Python中的multiprocessing.Pool类的实例中获取进程数。有办法吗?文档没有显示任何相关内容。谢谢 最佳答案 您可以使用_processes属性:>>>importmultiprocessing>>>pool=multiprocessing.Pool()>>>pool._processes8multiprocessing.cpu_count()的返回值相同除非您在创建Pool对象时指定了进程数。>>>multiprocessing.cpu_count()8

python - 无法使用 python 的多处理 Pool.apply_async() 腌制 <type 'instancemethod'>

我想运行这样的东西:frommultiprocessingimportPoolimporttimeimportrandomclassControler(object):def__init__(self):nProcess=10pages=10self.__result=[]self.manageWork(nProcess,pages)defBarcodeSearcher(x):returnx*xdefresultCollector(self,result):self.__result.append(result)defmanageWork(self,nProcess,pages):po

RuntimeError: DataLoader worker (pid(s) 17016, 18312) exited unexpectedly

RuntimeError:DataLoaderworker(pid(s)17016,18312)exitedunexpectedly这个错误通常是由于DataLoader中的一个或多个worker进程crash引起的,原因可能是许多不同的问题,例如内存不足、文件路径错误或其他系统问题。以下是一些解决方法:1.减少batch_size:减少batch_size可能会减少内存使用量,从而减少DataLoader进程crash的可能性。2.增加num_workers:增加num_workers可能会增加DataLoader的并行性,从而减少DataLoader进程crash的可能性。但是,要注意不要

python - 你应该在哪里更新 celery 设置?在远程 worker 或发件人?

您应该在哪里更新celery设置?在远程工作人员还是发件人?例如,我有一个使用Django和Celery的API。API通过代理(RabbitMQ)将远程作业发送给我的远程工作人员。工作人员正在运行python脚本(不使用Django),有时这些工作会产生子任务。我已经在双方(发件人和工作人员)上创建了celery设置,即他们都需要设置BROKER_URL。但是,假设我想添加设置CELERY_ACKS_LATE=True,我应该将此设置添加到哪一端?每个远程worker或发送者(API)?API和远程worker都连接到同一个Broker,每个都以不同的方式启动celery。API通过