草庐IT

multiprocessing-manager

全部标签

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

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

python - Django 项目中不存在 manage.py

我刚刚开始学习Django教程。运行命令:$django-admin.pystartprojectmysitemysite项目创建完成,但是mysite/下没有manage.py文件我试图获得详细的输出:$django-admin.pystartproject-v3mysite/home/pratik/Source/Numerical/ETS/etsproxy/enthought/__init__.py:7:DeprecationWarning:enthoughtnamespaceimportsaredeprecatedDeprecationWarning)Renderingproje

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

Python协程: Release context manager when pausing

背景:我是一位经验丰富的Python程序员,对新的协程/异步/等待功能一无所知。我不能写一个异步的“helloworld”来挽救我的生命。我的问题是:我得到了一个任意协程函数f。我想编写一个协程函数g来包装f,即我将把g给用户,就好像它是f,并且用户会调用它并且不会变得更聪明,因为g将在后台使用f。就像装饰普通Python函数以添加功能一样。我想添加的功能:每当程序流进入我的协程时,它就会获取我提供的上下文管理器,一旦程序流离开协程,它就会释放该上下文管理器。流量回来了?重新获取上下文管理器。它又出来了?重新发布它。直到协程完全结束。为了演示,这里描述了普通生成器的功能:defgene

python - multiprocessing.Process(使用 spawn 方法): which objects are inherited?

文档(python3.4)解释说,使用spawn,“子进程将仅继承运行进程对象的run()方法所需的那些资源”。但是哪些对象是“必要的”?我阅读它的方式向我表明,可以从run()内部访问的所有对象都是“必需的”,包括作为args传递给Process的参数.__init__,以及存储在全局变量中的任何内容,以及在全局范围内定义的类、函数及其属性。但是,这是不正确的;以下代码确认存储在全局变量中的对象没有被继承:#runningunderpython3.4/Windows#butbehavesthesameunderUniximportmultiprocessingasmpx=0class

python - Django 数据迁移在运行 manage.py test 时失败,但在运行 manage.py migrate 时失败

我有一个看起来像这样的Django1.7迁移:#-*-coding:utf-8-*-from__future__importunicode_literalsfromdjango.dbimportmodels,migrationsdefunits_to_m2m(apps,schema_editor):Interval=apps.get_model("myapp","Interval")IntervalUnit=apps.get_model("myapp","IntervalUnit")forintervalinInterval.objects.all():IntervalUnit(int

python - django,fastcgi : how to manage a long running process?

我继承了一个django+fastcgi应用程序,需要对其进行修改以执行冗长的计算(最多半小时或更长时间)。我想做的是在后台运行计算并返回“你的工作已经开始”类型的响应。当进程正在运行时,进一步点击url应该返回“您的作业仍在运行”,直到作业完成,此时应该返回作业的结果。对url的任何后续命中都应返回缓存的结果。我是django的完全新手,十年来没有做过任何重要的网络工作,所以我不知道是否有内置的方法来做我想做的事情。我已经尝试通过subprocess.Popen()启动进程,除了它在进程表中留下一个失效条目之外,它工作正常。我需要一个干净的解决方案,可以在它完成后删除临时文件和进程的

与常规字典相比,Python manager.dict() 非常慢

我有一个字典来存储对象:jobs={}job=Job()jobs[job.name]=job现在我想将它转换为使用managerdict,因为我想使用multiprocessing并且需要在monstprocesses中共享这个dictmgr=multiprocessing.Manager()jobs=mgr.dict()job=Job()jobs[job.name]=job只是通过转换为使用manager.dict()事情变得非常慢。例如,如果使用原生字典,创建625个对象并存储到字典中只需要0.65秒。同样的任务现在需要126秒!我可以做任何优化来使manager.dict()与p

python - celery.utils.log.ProcessAwareLoggerobject 在 logging.Logger.manager.loggerDict 中做什么

我正在通过以下方式检查logging.Logger.manager.loggerDict:importlogginglogging.Logger.manager.loggerDict字典如下:{'nose.case':,'apps.friends':,'oauthlib.oauth2.rfc6749.grant_types.client_credentials':,'apps.adapter.views':,'apps.accounts.views':,}TherearemorebutItruncatedit我的问题是:celery为何会涉及其他各种非celery应用程序的日志记录?是

python - 更改 multiprocessing.Queue 中的缓冲区大小

所以我有一个系统,生产者和消费者通过无限大小的队列连接,但是如果消费者重复调用get直到抛出Empty异常,它不会清除队列。我相信这是因为一旦套接字缓冲区已满,消费者端队列中将对象序列化到套接字中的线程就会被阻塞,因此它会等待直到缓冲区有空间,但是,这是可能的消费者调用get“太快”,因此它认为队列是空的,而实际上另一端的线程有更多数据要发送,但不能足够快地序列化它以防止套接字对消费者来说是空的。我相信如果我可以更改底层套接字上的缓冲区大小(我是基于Windows的),这个问题就会得到缓解。据我所知,我需要做的是:importmultiprocessing.connectionsasc