Применить Asyn c в Python2 .7 - PullRequest
0 голосов
/ 31 марта 2020

Я пытался написать простой код для многопроцессорной обработки, который раньше работал в 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. Есть ли у вас какие-либо предложения? Спасибо.

1 Ответ

0 голосов
/ 05 апреля 2020

Ранее я видел ответ, в котором говорилось, что мне нужно использовать 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()
...