Ho un semplice pattern di consumer producer impostato in parte del mio codice GUI. Sto tentando di creare un profilo solo per la sezione consumer specifica per vedere se c'è qualche possibilità di ottimizzazione. Tuttavia, quando si tenta di eseguire il codice con python -m cProfile -o out.txt myscript.py
viene visualizzato un errore generato dal modulo pickle
di Python.Codice di Python di profilazione che utilizza la multiprocessing?
File "<string>", line 1, in <module>
File "c:\python27\lib\multiprocessing\forking.py", line 374, in main
self = load(from_parent)
File "c:\python27\lib\pickle.py", line 1378, in load
return Unpickler(file).load()
File "c:\python27\lib\pickle.py", line 858, in load
dispatch[key](self)
File "c:\python27\lib\pickle.py", line 880, in load_eof
raise EOFError
EOFError
Il modello di base nel codice è
class MyProcess(multiprocessing.Process):
def __init__(self, in_queue, msg_queue):
multiprocessing.Process.__init__(self)
self.in_queue = in_queue
self.ext_msg_queue = msg_queue
self.name == multiprocessing.current_process().name
def run(self):
## Do Stuff with the queued items
Questo è di solito alimentato compiti dal lato GUI delle cose, ma a scopo di test, ho impostato come segue.
if __name__ == '__main__':
queue = multiprocessing.Queue()
meg_queue = multiprocessing.Queue()
p = Grabber(queue)
p.daemon = True
p.start()
time.sleep(20)
p.join()
Ma dopo aver provato a iniziare lo script, ottengo il messaggio di errore sopra riportato.
C'è un modo per aggirare l'errore?