在Python2.7中应用异步



我试图为以前在Python3中工作的多处理编写一个简单的代码。目前,我想将我的代码从Python3.6迁移到Python2.7。在Python 3.6中,它显示了预期的结果,但在Python 2.7中没有。有些人说我需要使用with mp.Pool() as pool,但结果是一样的。这是我的代码:

from __future__ import print_function
from multiprocessing import Pool
class Try():
def print_this(self, test):
print(test)
x = Try()
pool = Pool(1)
for i in range(10):
pool.apply_async(x.print_this, args=(i,))
pool.close()
pool.join()

Python3将显示此

0
1
2
3
4
5
6
7
8
9

但Python 2中没有。你有什么建议吗?非常感谢。

之前,我看到一个答案说我需要使用ThreadPool作为替代方案。我不知道他/她为什么去掉答案,因为它实际上非常有效。所以,这是我的代码:

from __future__ import print_function
from multiprocessing.pool import ThreadPool
# from multiprocessing.pool import Pool
class Try():
def print_this(self, test):
print(test)
# x = Try()
# pool = Pool(1)
# for i in range(10):
#     pool.apply_async(x.print_this, args=(i,))
# pool.close()
# pool.join()
x = Try()
pool = ThreadPool(processes=1)
pool.map_async(x.print_this, [i for i in range(10)])
pool.close()
pool.join()

相关内容

  • 没有找到相关文章

最新更新