pool相关内容
关于使用Python和Redis创建用于运行异步命令的作业队列应用程序,我有一些一般性问题.这是我到目前为止生成的代码: def queueCmd(cmd): r_server.rpush("cmds", cmd) def printCmdQueue(): print r_server.lrange("cmds", 0 , -1) def work(): prin
..
我正在尝试在代码中使用multiprocessing.Pool,但出现了以下异常: PicklingError: Can't pickle : attribute lookup __builtin__.instancemethod failed 我发现了这,它是首选解决方案配方 我的问题是我不知道如何在我的代码中实现此解决方案.
..
受到此解决方案的启发,我正在尝试在Python中建立工作进程的多处理池.这个想法是在工作程序实际开始工作之前将一些数据传递给工作程序,并最终重新使用它们.旨在最大程度减少每次调用工作进程所需的打包数据量(即,减少进程间通信开销).我的 MCVE 看起来像这样: import multiprocessing as mp import numpy as np def create_worker
..
我有一个代码,可以解析大量XML文件(使用xml.sax库)以提取数据以供将来进行机器学习.我希望解析部分可以并行运行(我在服务器上有24个核心,同时还提供一些Web服务,因此我决定使用其中的20个).解析后,我想合并结果.以下代码应该(确实正在)执行我期望的操作,但是并行操作存在问题. def runParse(fname): parser = make_parser()
..
我正在对池使用多处理.我需要将结构作为参数传递给必须在单独的进程中使用的函数.我无法使用multiprocessing.Pool的映射功能,因为我既不能复制Pool.Queue,也不能复制Pool.Array.该结构将在运行中用于记录每个终止过程的结果.这是我的代码: import multiprocessing from multiprocessing import Process, Ma
..
我正在尝试学习如何在Python中使用多重处理. 我读到有关多重处理的文章,并且我试图做这样的事情: 我有下面的类(部分代码),该类具有生成voronoi图的方法: class ImageData: def generate_voronoi_diagram(self, seeds): """ Generate a voronoi diagram wit
..
我有一个简单的代码: path = [filepath1, filepath2, filepath3] def umap_embedding(filepath): file = np.genfromtxt(filepath,delimiter=' ') if len(file) > 20000: file = file[np.random.choice(fi
..
我有一个令人尴尬的可并行化问题,其中涉及一堆彼此独立解决的任务.解决每个任务的时间很长,因此这是进行多处理的主要选择. 问题是要解决我的任务,需要创建一个特定的对象,该对象很耗时,但可以重复用于所有任务(例如需要启动一个外部二进制程序),因此在串行版本中我做这样的事情: def costly_function(task, my_object): solution = solve
..
这个问题可能是重复的.但是,我在这个话题上读了很多东西,但没有找到与我的情况相符的东西-或至少我不理解它. 很抱歉给您带来麻烦. 我想做的是相当普遍的,将kwargs列表传递给pool.starmap(),以实现多处理. 这是我减轻的情况: def compute(firstArg, **kwargs): # A function that does things
..
我正在制作一个压缩的(仅右上角)距离矩阵.距离的计算需要一些时间,因此我想并行化for循环.未平行的循环看起来像 spectra_names, condensed_distance_matrix, index_0 = [], [], 0 for index_1, index_2 in itertools.combinations(range(len(clusters)), 2):
..
我注意到python在池分配中的这种行为.即使池中有20个进程,当我对8个进程执行map_async时,也没有抛出所有要执行的进程,而是仅执行了4个.当这四个完成时,它又发送两个,然后当两个完成时,发送一个. 当我向它扔20个以上时,它将全部运行20个,直到重复上述行为后,队列中的数量开始少于20个. 我认为这是有目的的,但是看起来很奇怪.我的目标是尽快处理请求,显然这种行为不适合.
..
每当我使用以下代码时,池结果总是返回超时,我在做逻辑上不正确的事情吗? from multiprocessing import Pool, Process, cpu_count def add(num): return num+1 def add_wrap(num): new_num = ppool.apply_async(add, [num]) print new_num.
..
在multiprocessing.Pool中,我试图以相同的顺序显示打印件. from multiprocessing import Pool import time def func(arg): time.sleep(0.001) print(arg, end=" ") proc_pool = Pool(4) proc_pool.map(func, range(30))
..
我有一个简单的python多处理脚本,该脚本设置了一个工作池,这些工作池试图将工作输出追加到Manager列表.该脚本具有3个调用堆栈:-主调用f1产生几个调用另一个函数g1的工作进程.当尝试调试脚本时(偶然在Windows 7/64 bit/VS 2010/PyTools上),脚本会运行到嵌套的进程创建循环中,从而产生了无数个进程.谁能确定原因?我确定我缺少一些非常简单的东西.这是有问题的代码:
..
我是Python的新手,正在尝试使用multiprocessing.pool程序来处理文件,只要没有异常,它就可以正常工作.如果任何线程/进程获得异常,则整个程序将等待线程 代码段: cp = ConfigParser.ConfigParser() cp.read(gdbini) for table in cp.sections(): jobs.append(table) #p
..
因此,最近几天我一直在搞弄python的multiprocessing lib,我真的很喜欢处理池.这很容易实现,我可以看到很多用途.我已经做过一些我以前听说过的项目,以熟悉它,最近完成了一个程序,该程序对that子手进行了蛮力的游戏. 我在做一个执行时间比较,将单线程和通过处理池的100万到200万之间的所有质数求和.现在,对于the子手来说,将游戏置于处理池中可以将执行时间提高约8倍(i
..
我有一个multiprocessing脚本,其中的pool.map可以正常工作.问题在于,并非所有进程都需要花费很长时间才能完成,因此某些进程因为要等到所有进程完成才进入睡眠状态(与如果我了解手册和这篇文章)正确地表示,pool.imap并不等待所有进程完成,如果已完成,它正在提供一个新文件进行处理.当我尝试这样做时,脚本将加快要处理的文件的速度,小的文件将按预期方式处理,大的文件(需要更多时间来
..
这个(大大简化的示例)可以很好地工作(Python 2.6.6,Debian Squeeze): from multiprocessing import Pool import numpy as np src=None def process(row): return np.sum(src[row]) def main(): global src src=np.
..
我试图在多处理池中的每个进程上运行cProfile.runctx(),以了解源中的多处理瓶颈.这是我要执行的操作的简化示例: from multiprocessing import Pool import cProfile def square(i): return i*i def square_wrapper(i): cProfile.runctx("result =
..
到目前为止,每当我需要使用 multiprocessing 时,我都这样做通过手动创建“进程池"并与所有子进程共享工作队列. 例如: from multiprocessing import Process, Queue class MyClass: def __init__(self, num_processes): self._log =
..