我试图使用pool.apply_async()
异步运行类函数。但似乎我无法在## test.py ##
import multiprocessing as mp
from testclass import testclass
def nonclass_test():
print("nonclass_test")
def nonclass_callback(self):
print("nonclass_callback")
pool = mp.Pool()
test = testclass()
#test.test()
#print("testclass working ...")
#pool.apply_async(nonclass_test, args = (), callback = nonclass_callback)
pool.apply_async(test.test, args = (), callback = nonclass_callback)
pool.apply_async(test.test, args = (test, ), callback = test.callback)
pool.close()
pool.join()
内调用任何类函数。但是在同一个文件中定义的函数很好。
这是已知的行为吗?我错过了它,如果是的话,我怎么能以尽可能少的代码异步运行我的函数?
这是我的两个文件,证明了这个问题:
## testclass.py ##
class testclass:
def __init__(self):
print("initiated")
def test(self):
print("classtest")
def callback(self):
print("classcallback")
-
"nonclass_test"
在我的输出中,我只收到消息"nonclass_callback"
和127.0.0.1
。似乎正在执行类函数(既不回调也不是实际函数)。
感谢您的帮助。