TypeError: can't pickle DB objects when invoking "doit -n 2"

17 views
Skip to first unread message

Roy Lowrance

unread,
Mar 19, 2017, 5:43:06 AM3/19/17
to python-doit
My dodo file runs OK if I invoke it with "doit".

But trying to run in parallel generates the TypeError in the subject line, with this traceback:

C:\Users\roylo\Dropbox\ads\research\shasha\re-avm\src>doit -n 2
Traceback (most recent call last):
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\site-packages\doit\doit_cmd.py", line 103, in run
    return self.sub_cmds[command].parse_execute(args)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\site-packages\doit\cmd_base.py", line 60, in parse_execute
    return self.execute(params, args)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\site-packages\doit\cmd_base.py", line 239, in execute
    return self._execute(**exec_params)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\site-packages\doit\cmd_run.py", line 181, in _execute
    return runner.run_all(self.control.task_dispatcher())
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\site-packages\doit\runner.py", line 235, in run_all
    self.run_tasks(task_dispatcher)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\site-packages\doit\runner.py", line 368, in run_tasks
    proc_list = self._run_start_processes(task_q, result_q)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\site-packages\doit\runner.py", line 355, in _run_start_processes
    process.start()
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\multiprocessing\process.py", line 130, in start
    self._popen = Popen(self)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\multiprocessing\forking.py", line 277, in __init__
    dump(process_obj, to_child, HIGHEST_PROTOCOL)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\multiprocessing\forking.py", line 199, in dump
    ForkingPickler(file, protocol).dump(obj)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 224, in dump
    self.save(obj)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 425, in save_reduce
    save(state)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 655, in save_dict
    self._batch_setitems(obj.iteritems())
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
    save(v)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\multiprocessing\forking.py", line 67, in dispatcher
    self.save_reduce(obj=obj, *rv)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 401, in save_reduce
    save(args)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 554, in save_tuple
    save(element)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 425, in save_reduce
    save(state)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 655, in save_dict
    self._batch_setitems(obj.iteritems())
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
    save(v)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 425, in save_reduce
    save(state)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 655, in save_dict
    self._batch_setitems(obj.iteritems())
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
    save(v)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\multiprocessing\forking.py", line 67, in dispatcher
    self.save_reduce(obj=obj, *rv)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 401, in save_reduce
    save(args)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 554, in save_tuple
    save(element)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 425, in save_reduce
    save(state)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 655, in save_dict
    self._batch_setitems(obj.iteritems())
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
    save(v)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 425, in save_reduce
    save(state)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 655, in save_dict
    self._batch_setitems(obj.iteritems())
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
    save(v)
  File "C:\Users\roylo\AppData\Local\Continuum\Anaconda2\lib\pickle.py", line 306, in save
    rv = reduce(self.proto)
TypeError: can't pickle DB objects

* * *

I'm guessing that I've goofed  up.

Is there a fix?


Eduardo Schettino

unread,
Mar 19, 2017, 5:45:44 AM3/19/17
to python-doit
Not sure what is going on. Windows quite often has problems with multi-processing.
You will need to debug that, have you tried running with the `--pdb` option ?

--
You received this message because you are subscribed to the Google Groups "python-doit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python-doit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages