На примере многопроцессорного использования пафоса и укропа Я наткнулся на стену ошибок cPickle. Я сделал так, как www3cam; с небольшим дополнением.. за счет удаления пафоса, укропа, мультипроцесса и pyreadline. Затем нажмите pip install pathos --no-cache-dir
после тщательного удаления упомянутых выше побочных пакетов. Свежая установка, холодная перезагрузка ПК и обновление Anacoda2 позже... банка с cPickles... все еще там, и Фрэнк Заппа продолжает петь свою песню "Titties and Beer".
Модифицированный код из 1:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, sys
import datetime, time
import multiprocessing
import pathos.pools as pp
import dill
class Multiprocess(object):
def __init__(self):
pass
def qmp_worker(self,(inputs, the_time)):
print " Processs %s\tWaiting %s seconds" % (inputs, the_time)
time.sleep(int(the_time))
print " Process %s\tDONE" % inputs
def qmp_handler(self): # Non tandem pair processing
pool = pp.ProcessPool(2)
pool.map(self.qmp_worker, data)
def mp_worker((inputs, the_time)):
print " Process %s\tWaiting %s seconds" % (inputs, the_time)
time.sleep(int(the_time))
print " Process %s\tDONE" % inputs
sys.stdout.flush()
def mp_handler(): # Non tandem pair processing
p = multiprocessing.Pool(2)
p.map(mp_worker, data)
def mp_handler_tandem():
subdata = zip(data[0::2], data[1::2])
# print subdata
for task1, task2 in subdata:
p = multiprocessing.Pool(2)
p.map(mp_worker, (task1, task2))
#data = (['a', '1'], ['b', '2'], ['c', '3'], ['d', '4'])
data = (['a', '2'], ['b', '3'], ['c', '1'], ['d', '4'],
['e', '1'], ['f', '2'], ['g', '3'], ['h', '4'])
if __name__ == '__main__':
sys.stdout.flush()
# print 'mp_handler():'
# mp_handler()
# print '---'
# time.sleep(2)
# print '\nmp_handler_tandem():'
# mp_handler_tandem()
print '---'
# time.sleep(2)
Multiprocess().qmp_handler()
Возможно, что-то должно быть установлено, как в примере из здесь "отлов и печать трассировок PyQt5?
Фрагмент кода ниже, который заставил меня задуматься, и мне стало любопытно, нужно ли делать что-то подобное для укропа?
# Back up the reference to the exceptionhook
sys._excepthook = sys.excepthook
# Set the exception hook to our wrapping function
sys.excepthook = my_exception_hook
Последняя ошибка:
Файл "c:\python\anac2\lib\site-packages\pathos\multiprocessing.py", строка 137, в карте return _pool.map(star(f), zip(*args)) # размер фрагмента Файл "c:\ python\anac2\lib\site-packages\multiprocess\pool.py", строка 251, в карте return self.map_async(func, iterable, chunksize).get() File "c:\python\anac2\lib\site- Packages\multiprocess\pool.py", строка 567, в get поднять self._value cPickle.PicklingError: Невозможно выбрать: поиск атрибута встроенный.функция не удалась
Дополнительная информация об этой ошибке находится по адресу: мой дамп cPickle.