Python 多处理和多线程同时进行

时间:2021-01-20 12:32:10

标签: python multithreading multicore

我有一个任务需要很多时间来处理,因为我必须运行 2 个非常大的循环。我想多线程循环之一和多核上面的一个。不幸的是,似乎有错误

Id

以上函数我多线程如下:

def do_something(x,y):
    time.sleep(1)
    return x*y

当我像下面这样运行时:

def do_something_T(j):
    with concurrent.futures.ThreadPoolExecutor() as tExecuter:
        th = [tExecuter.submit(do_something, i, j) for i in range(50)]
    for result in concurrent.futures.as_completed(th):
        print(result.result())

不幸的是,仍然有一个循环需要很长时间,所以我尝试对这个循环进行多重处理,如下所示:

start = time.perf_counter()

for j in range(50):
    do_something_T(j)

end = time.perf_counter()
print(end-start)

一开始我很惊讶它花了这么少但没有打印出来所以当我检查一个过程时我得到了以下错误:

start = time.perf_counter()

with concurrent.futures.ProcessPoolExecutor() as pExecuter:
    pr =[pExecuter.submit(do_something_T, j) for j in range(50)]

end = time.perf_counter()
print(end-start)

我不明白这个错误背后的原因。如果我多线程最后一个循环它工作正常,但我想看看多处理是否会使它更快。如果您对此错误有任何帮助,我将不胜感激

0 个答案:

没有答案