微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。