我有一个CPU密集型的芹菜任务。 我想使用大量EC2实例的所有处理能力(核心)来更快地完成这项工作( 我认为是一个多处理的芹菜并行分布式任务) 。 线程 , 多处理 , 分布式计算 , 分布式并行处理等术语都是我想要更好地理解的术语。 示例任务: @app.task for item in list_of_millions_of_ids: id = item # do some long complicated equation here very CPU heavy!!!!!!! database.objects(newid=id).save() 使用上面的代码(如果可能,举个例子)如何使用Celery来分配这个任务,通过允许在云中的所有可用机器上利用所有计算CPU能力来分割这个任务?
我正在尝试使用部分函数,以便pool.map()可以定位一个具有多个参数的函数(在本例中为Lock()对象)。 以下是示例代码(摘自对我的上一个问题的回答): from functools import partial def target(lock, iterable_item): for item in items: # Do cool stuff if (… some condition here …): lock.acquire() # Write to stdout or logfile, etc. lock.release() def main(): iterable = [1, 2, 3, 4, 5] pool = multiprocessing.Pool() l = multiprocessing.Lock() func = partial(target, l) pool.map(func, iterable) pool.close() pool.join() […]
我有一个Linux的Python程序几乎看起来像这样: import os import time process = os.popen("top").readlines() time.sleep(1) os.popen("killall top") print process 该程序挂在这一行: process = os.popen("top").readlines() 并发生在保持更新输出的工具,如“顶” 我最好的尝试: import os import time import subprocess process = subprocess.Popen('top') time.sleep(2) os.popen("killall top") print process 它比第一个(它是凯尔特人)更好,但它返回: <subprocess.Popen object at 0x97a50cc> 第二次审判: import os import time import subprocess process = subprocess.Popen('top').readlines() time.sleep(2) os.popen("killall top") print process 与第一个相同。 它由于“readlines()”而被吊死 […]