jjzjj

$multiprocessing

全部标签

python - 如何在 Multiprocessing 中捕获 worker 中的异常

我正在使用Python(2.7.3)中的多处理模块,并且想调试我的工作人员中正在进行的一些事情。但是,我似乎无法在工作线程中捕获任何异常。一个最小的例子:importmultiprocessingasmpa=[1]defworker():printa[2]defpool():pool=mp.Pool(processes=1)pool.apply_async(worker,args=())pool.close()pool.join()print"Multiprocessingdone!"if__name__=='__main__':pool()预计会引发IndexError,但我的输出只

python - 在python中使用 'multiprocessing'包的最佳实践

我正在尝试使用multiprocessing模块在python.我有以下示例代码,它在ipython笔记本中执行时没有任何错误。但是我看到每次执行笔记本中的代码块时,都会在后台产生额外的python进程。importmultiprocessingasmpdeff(x):print"HelloWorld",mp.current_process()return1pool=mp.Pool(3)data=range(0,10)pool.map(f,data)而当我将相同的内容保存在普通的.py文件中并执行时,我遇到了错误并且必须终止终端以停止执行程序。我通过if__name__=='__mai

Python 无法使用 multiprocessing.pool 分配内存

我的代码(遗传优化算法的一部分)并行运行几个进程,等待所有进程完成,读取输出,然后用不同的输入重复。当我重复测试60次时,一切正常。由于它有效,我决定使用更实际的重复次数200。我收到此错误:File"/usr/lib/python2.7/threading.py",line551,in__bootstrap_innerself.run()File"/usr/lib/python2.7/threading.py",line504,inrunself.__target(*self.__args,**self.__kwargs)File"/usr/lib/python2.7/multipr

python - multiprocessing.Queue 和 Queue.Queue 有什么不同?

如果我使用Queue.Queue,那么我的read()函数不起作用,为什么?但是,如果我使用multiprocessing.Queue,它运行良好:frommultiprocessingimportPool,Process,Queueimportos,time#fromQueueimportQueuedefwrite(q):forvin['A','B','C']:print'Put%stoqueue'%vq.put_nowait(v)time.sleep(0.2)defread(q):while1:ifnotq.empty():v=q.get(True)print"Get%sfromq

python - 如何检索通过 multiprocessing.Process 调用的函数返回的多个值

我有这样一个场景:foreachincontent:pdf_output,job_id=createpdf(each)ifpdf_output:pdf_output=pdf_output+pdf_output我正在尝试并行化整个过程。像这样jobs=[]foreachincontent:jobs.append(multiprocessing.Process(target=self.createpdf,args=(content)))foreachinjobs:jobs.start()foreachinjobs:jobs.join()我如何理智地完成任务ifpdf_output:pdf_

python - multiprocessing.pool.map 和带有两个参数的函数

我正在使用multiprocessing.Pool()这是我想要的池:definsert_and_process(file_to_process,db):db=DAL("path_to_mysql"+db)#TableDefinationsdb.table.insert(**parse_file(file_to_process))returnTrueif__name__=="__main__":file_list=os.listdir(".")P=Pool(processes=4)P.map(insert_and_process,file_list,db)#herehavingprob

具有全局数据的python并行映射(multiprocessing.Pool.map)

我正在尝试在多个进程上调用一个函数。显而易见的解决方案是python的multiprocessing模块。问题是该功能有副作用。它创建一个临时文件并使用atexit.register和全局列表注册要在退出时删除的文件。以下应证明问题(在不同的上下文中)。importmultiprocessingasmultiglob_data=[]deffunc(a):glob_data.append(a)map(func,range(10))printglob_data#[0,1,2,3,4...,9]Good.p=multi.Pool(processes=8)p.map(func,range(80

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()是做什么用的,因为你处理一个