jjzjj

$multiprocessing

全部标签

python - 从 multiprocessing.Queue 获得近后进先出行为的干净方法? (甚至只是*不*接近先进先出)

有谁知道从multiprocessing.Queue获得接近LIFO甚至不接近FIFO(例如随机)行为的干净方法?替代问题:有人可以指出管理multiprocessing.Queue背后的实际存储结构的线程的代码吗?这似乎是微不足道的提供大约后进先出的访问权限,但我在试图找到它的过程中迷失了方向。注意事项:我相信multiprocessing.Queuedoesnotguaranteeorder.美好的。但它是near-FIFO,所以near-LIFO会很棒。我可以将所有当前项目从队列中取出并在处理它们之前颠倒顺序,但我更愿意尽可能避免困惑。(编辑)澄清一下:我正在使用multipro

python multiprocessing.Pool kill *特定*长时间运行或挂起的进程

我需要执行一个包含许多并行数据库连接和查询的池。我想使用multiprocessing.Pool或concurrent.futuresProcessPoolExecutor。Python2.7.5在某些情况下,查询请求花费的时间太长或永远不会完成(挂起/僵尸进程)。我想从超时的multiprocessing.Pool或concurrent.futuresProcessPoolExecutor中终止特定进程。这是一个如何终止/重新生成整个进程池的示例,但理想情况下我会尽量减少CPU抖动,因为我只想终止在超时秒后未返回数据的特定长时间运行的进程。由于某些原因,在返回并完成所有结果后,下面的

Python 2.6 multiprocessing.Queue 与线程兼容?

我正在试验Python2.6中的新多处理模块。我正在创建多个进程,每个进程都有自己的multiprocessor.JoinableQueue实例。每个进程生成一个或多个共享JoinableQueue实例(通过每个线程的__init__方法传入)的工作线程(threading.Thread的子类)。它似乎通常可以工作,但偶尔会出现不可预测的失败并出现以下错误:File"C:\DocumentsandSettings\Brian\Desktop\testscript.py",line49,inrunself.queue.task_done()File"C:\Python26\lib\mul

python - 在 python 中清空 multiprocessing.queue(-1) 的首选方法

我想拉出当前队列中的所有项目。还有一个线程不断的在另一端放item,每期我都想获取当前队列中的所有item。有什么理由更喜欢:res=[]whileq.qsize>0:res.append(q.get())或res=[]whileTrue:try:res.append(q.get(block=False))exceptQueue.Empty:break现在文档明确指出qsize()>0不会阻止队列在get上阻塞,但这是否仅在多个线程可以从输出中获取的情况下才正确?Queue.qsize()Returntheapproximatesizeofthequeue.Note,qsize()>0

python - `context` 中的 `multiprocessing.pool.Pool` 参数是什么意思?

context是classmultiprocessing.pool.Pool构造函数中的可选参数。Documentation只说:contextcanbeusedtospecifythecontextusedforstartingtheworkerprocesses.Usuallyapooliscreatedusingthefunctionmultiprocessing.Pool()orthePool()methodofacontextobject.Inbothcasescontextissetappropriately.它没有阐明什么是“上下文对象”,为什么classPool构造函数

Python:来自 `threading` 和 `multiprocessing` 的锁可以互换吗?

threading模块中的锁是否可以与multiprocessing模块中的锁互换? 最佳答案 您通常可以互换使用这两者,但您需要了解其中的差异。例如,multiprocessing.Event由命名信号量支持,它对应用程序下的平台敏感。Multiprocessing.Lock由Multiprocessing.SemLock支持-因此它需要命名信号量。本质上,您可以互换使用它们,但是使用多进程的锁会引入一些对应用程序的平台要求(即,它不能在BSD上运行:)) 关于Python:来自`th

python - 为什么 multiprocessing.sharedctypes 赋值这么慢?

这里有一些基准代码来说明我的问题:importnumpyasnpimportmultiprocessingasmp#allocatememory%timetemp=mp.RawArray(np.ctypeslib.ctypes.c_uint16,int(1e8))Walltime:46.8ms#assignmemory,veryslow%timetemp[:]=np.arange(1e8,dtype=np.uint16)Walltime:10.3s#equivalentnumpyassignment,100Xfaster%timea=np.arange(1e8,dtype=np.uin

python - python multiprocessing Queue 对于对象放置是否安全?

当我将对象放入Queue时,是否需要创建对象的深拷贝然后放入队列? 最佳答案 如果能保证Object只在一个Thread中处理,这不是问题。但是如果不能,建议使用深拷贝。如果您将对象放入Queue对象,它不会自动执行此操作。查看引用Multithreading,PythonandpassedargumentsPythoninPractice:CreateBetterProgramsUsingConcurrency...p.154请记住,对象需要能够被pickle(MultiprocessingBasics)Itusuallymore

python 3 : Monkey-patched code not re-importable by multiprocessing

简介当模块A的函数应该是可导入的时,我如何从模块B修改模块A,以便我可以使用multiprocessing标准库包运行模块A的函数?背景客户请求的修补程序不适用于我们的任何其他客户,因此我创建了一个新分支并专门为他们编写了一个单独的模块,以便轻松合并主分支的更改。为了保持客户端与预修补程序行为的向后兼容性,我将修补程序实现为应用程序中的可配置设置。因此,我不想替换我的旧代码——只是在设置打开时修补它。我通过monkeypatching做到了这一点.代码结构__main__模块读取配置文件。如果配置打开了修补程序的开关,__main__通过用hotfix模块中定义的代码替换几个函数来修补

python - 如何对使用 python-multiprocessing 的代码进行单元测试

我有一些代码使用multiprocessing.Pool来forkworker并并行执行任务。我正试图找到正确的方法来运行这段代码的单元测试。请注意,我不是尝试并行测试串行代码测试用例,我知道像nosesupport这样的包。如果我编写一个测试所述并行代码的测试函数,并尝试通过nose运行测试:noseteststests/test_function.py非并行测试正确执行但并行测试失败当multiprocessing由于main不可导入而尝试fork时:File"C:\python-2.7.10.amd64\lib\multiprocessing\forking.py",line48