在 Python2.7 中应用 Async
Posted
技术标签:
【中文标题】在 Python2.7 中应用 Async【英文标题】:Apply Async in Python2.7 【发布时间】:2020-07-11 12:05:43 【问题描述】:我尝试为以前在 Python3 中工作的多处理编写简单的代码。目前,我想将我的代码从 Python3.6 迁移到 Python2.7。在 Python3.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
但不是在 Python2 中。你有什么建议吗?谢谢。
【问题讨论】:
我的建议是离开Python2:python.org/doc/sunset-python-2 【参考方案1】:之前看到一个回答说需要使用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()
【讨论】:
以上是关于在 Python2.7 中应用 Async的主要内容,如果未能解决你的问题,请参考以下文章
python2.7应用codecs模块处理包含中文的读写问题
python2.7应用codecs模块处理包含中文的读写问题