【发布时间】:2017-07-09 15:14:33
【问题描述】:
我正在使用来自multiprocessing.pool 的ThreadPool,但它似乎不起作用(即它按顺序而不是并行执行:res1 需要 14 秒,res2 需要 11 秒,使用 ThreadPool 需要27 秒而不是 14 秒)。
我认为问题出在another_method,因为它使用(共享)read_only_resource。
我尝试在 another_method 中使用 time.sleep(val) 而不是调用另一个方法(按预期工作 - 只要我通过的最大值就需要),我还尝试传递read_only_resource(这个不行,需要27s)。
我已经用完了所有东西来尝试完成这项工作:
def method(text_type, read_only_resource):
value = some_processesing(text_type)
return another_method(value, read_only_resource)
def main():
same_read_only_resource = get_read_only_resource()
pool = ThreadPool(processes=2)
res1 = pool.apply_async(method, (some_text_type, same_read_only_resource))
res2 = pool.apply_async(method, (other_text_type, same_read_only_resource))
results1 = res1.get()
results2 = res2.get()
【问题讨论】:
标签: python-2.7 threadpool python-multiprocessing