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

问题描述

我有一个任务需要很多时间来处理,因为我必须运行 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)

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)