Python 方法为可调用的ProcessPoolExecutor

Python 方法为可调用的ProcessPoolExecutor,python,Python,我试图向ProcessPoolExecutor提交一个方法,但它根本不运行该方法。如果我只传递一个函数,它就可以正常工作。知道这是为什么吗?我能做些什么 executor = ProcessPoolExecutor(max_workers=16) task0 = executor.submit(do_thing) # works task1 = executor.submit(foo.do_thing)) # broken 一种更简单的方法是使用线程。如果我没弄错你的问题 我认为在您的情况下,

我试图向ProcessPoolExecutor提交一个方法,但它根本不运行该方法。如果我只传递一个函数,它就可以正常工作。知道这是为什么吗?我能做些什么

executor = ProcessPoolExecutor(max_workers=16)
task0 = executor.submit(do_thing) # works
task1 = executor.submit(foo.do_thing)) # broken

一种更简单的方法是使用线程。如果我没弄错你的问题

我认为在您的情况下,线程会更合适,因为它们在当前进程中共享内存空间。这就是为什么,这不适用于单独的进程,因为它们不共享相同的内存空间

首先想到的两个玩具示例如下:

#如果您想在一个foo上多次操作
foo=foo()
以futures.ThreadPoolExecutor(max_workers=4)作为执行器:
对于范围(4)中的i:
遗嘱执行人提交(食物做事情)
#如果你想处理4个独立的foo
foo_list=[foo()表示范围(4)中的i]
以futures.ThreadPoolExecutor(max_workers=4)作为执行器:
执行者地图(Foo.do_thing,Foo_list)
对于完整性,请使用Foo类进行测试:

Foo类:
定义初始化(自):
自和=0
def do_thing(自我):
对于范围(1000)内的i:
自.\uu和+=i
@财产
定义和(自身):
返回自和
当然,这只是一种方法


哦,还有最后一件事。如果我记得很清楚的话,建议在
中使用这些类,当完成时,这将自动关闭池,这样你就不会忘记它。

foo。dou-thing
不会对你的
foo
做任何事情,它将在另一个
foo
上运行,该对象是通过在新的过程中对对象进行酸洗,然后对其进行解酸洗而创建的。不过,它似乎什么都不做。它需要几分之一秒的时间来完成,而不是使用正常函数所需的10秒。我有一个需要修改的类,我想同时修改其中的许多类。这在Python中可能吗?