I am porting some python 3 code back to 2.7 to support a ROS implementation and am stuck on a thread.lock error when starting my process. The code that errors out is as follows:
from bin.gui.mainWindow_ui import *
from bin.client.Server import Server
from bin.common.Logger import Logger as log
from bin.common.Constants import Constants as con
from bin.parse.Data_NoROS import Data as data
from multiprocessing import Process, Pipe
import os
import time
LOG = log('DEBUG')
DATA = data()
SERVER = Server(DATA, LOG)
TAG = "MainWindow"
class MainWindow(QtWidgets.QMainWindow):
"""
Handles the ui elements and connects to worker service to execute processes.
"""
def __init__(self):
"""
Initializes values for the UI.
"""
QtWidgets.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.running = False
# configures
self._configure_signals()
# enable ui
self._enable_ui()
self.ui.textEdit_2.setText(' Not Connected')
# setup server process
self.gui_conn, self.data_conn = Pipe()
self.listenProcess = Process(target=SERVER.Listen, args=(self.data_conn,))
def Connect(self):
"""
Starts the server process for acquisition of the selected serial port.
This function is connected to the clicked signal of the Start button.
"""
self.running = True
LOG.i(TAG, "User clicked CONNECT")
self.listenProcess.start()
LOG.i(TAG, "Started Server Process as: PID".format(os.getpid()))
self.ui.textEdit_2.setTextColor(QtCore.Qt.darkGreen)
self.ui.textEdit_2.setText('\tSYSTEM READY')
self.UpdateGUI()
Once I enter the connect function and get to self.listenProcess.start() i get the following error:
Traceback (most recent call last):
File "I:\eCHRApplication\bin\gui\mainWindow.py", line 60, in Connect
self.listenProcess.start()
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\process.py", line 130, in start
self._popen = Popen(self)
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 277, in __init__
dump(process_obj, to_child, HIGHEST_PROTOCOL)
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 199, in dump
ForkingPickler(file, protocol).dump(obj)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 224, in dump
self.save(obj)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 67, in dispatcher
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 401, in save_reduce
save(args)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 554, in save_tuple
save(element)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 731, in save_inst
save(stuff)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 692, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 606, in save_list
self._batch_appends(iter(obj))
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 642, in _batch_appends
save(tmp[0])
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 306, in save
rv = reduce(self.proto)
TypeError: can't pickle thread.lock objects
Initializing server object
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 381, in main
self = load(from_parent)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 1384, in load
return Unpickler(file).load()
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 864, in load
dispatch[key](self)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 886, in load_eof
raise EOFError
EOFError
Any help in finding the root cause would be greatly appreciated.
Sorry new to forum and forgot to use tags
Sorry!!!! Here is an easier to read version actually using tags
I am porting some python 3 code back to 2.7 to support a ROS implementation and am stuck on a thread.lock error when starting my process. The code that errors out is as follows:
from bin.gui.mainWindow_ui import *
from bin.client.Server import Server
from bin.common.Logger import Logger as log
from bin.common.Constants import Constants as con
from bin.parse.Data_NoROS import Data as data
from multiprocessing import Process, Pipe
import os
import time
LOG = log('DEBUG')
DATA = data()
SERVER = Server(DATA, LOG)
TAG = "MainWindow"
class MainWindow(QtWidgets.QMainWindow):
"""
Handles the ui elements and connects to worker service to execute processes.
"""
def __init__(self):
"""
Initializes values for the UI.
"""
QtWidgets.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.running = False
# configures
self._configure_signals()
# enable ui
self._enable_ui()
self.ui.textEdit_2.setText(' Not Connected')
# setup server process
self.gui_conn, self.data_conn = Pipe()
self.listenProcess = Process(target=SERVER.Listen, args=(self.data_conn,))
def Connect(self):
"""
Starts the server process for acquisition of the selected serial port.
This function is connected to the clicked signal of the Start button.
"""
self.running = True
LOG.i(TAG, "User clicked CONNECT")
self.listenProcess.start()
LOG.i(TAG, "Started Server Process as: PID".format(os.getpid()))
self.ui.textEdit_2.setTextColor(QtCore.Qt.darkGreen)
self.ui.textEdit_2.setText('\tSYSTEM READY')
self.UpdateGUI()
Once I enter the connect function and get to self.listenProcess.start() i get the following error:
Traceback (most recent call last):
File "I:\eCHRApplication\bin\gui\mainWindow.py", line 60, in Connect
self.listenProcess.start()
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\process.py", line 130, in start
self._popen = Popen(self)
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 277, in __init__
dump(process_obj, to_child, HIGHEST_PROTOCOL)
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 199, in dump
ForkingPickler(file, protocol).dump(obj)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 224, in dump
self.save(obj)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 67, in dispatcher
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 401, in save_reduce
save(args)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 554, in save_tuple
save(element)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 731, in save_inst
save(stuff)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 692, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 606, in save_list
self._batch_appends(iter(obj))
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 642, in _batch_appends
save(tmp[0])
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 306, in save
rv = reduce(self.proto)
TypeError: can't pickle thread.lock objects
Initializing server object
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 381, in main
self = load(from_parent)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 1384, in load
return Unpickler(file).load()
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 864, in load
dispatch[key](self)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 886, in load_eof
raise EOFError
EOFError
Any help in finding the root cause would be greatly appreciated.
Sorry new to forum and forgot to use tags
Sorry!!!! Here is an easier to read version actually using tags
I am porting some python 3 code back to 2.7 to support a ROS implementation and am stuck on a thread.lock error when starting my process. The code that errors out is as follows:
from bin.gui.mainWindow_ui import * from bin.client.Server import Server from bin.common.Logger import Logger as log from bin.common.Constants import Constants as con from bin.parse.Data_NoROS import Data as data from multiprocessing import Process, Pipe import os import time LOG = log('DEBUG') DATA = data() SERVER = Server(DATA, LOG) TAG = "MainWindow" class MainWindow(QtWidgets.QMainWindow): """ Handles the ui elements and connects to worker service to execute processes. """ def __init__(self): """ Initializes values for the UI. """ QtWidgets.QMainWindow.__init__(self) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.running = False # configures self._configure_signals() # enable ui self._enable_ui() self.ui.textEdit_2.setText(' Not Connected') # setup server process self.gui_conn, self.data_conn = Pipe() self.listenProcess = Process(target=SERVER.Listen, args=(self.data_conn,)) def Connect(self): """ Starts the server process for acquisition of the selected serial port. This function is connected to the clicked signal of the Start button. """ self.running = True LOG.i(TAG, "User clicked CONNECT") self.listenProcess.start() LOG.i(TAG, "Started Server Process as: PID".format(os.getpid())) self.ui.textEdit_2.setTextColor(QtCore.Qt.darkGreen) self.ui.textEdit_2.setText('\tSYSTEM READY') self.UpdateGUI()Once I enter the connect function and get to self.listenProcess.start() i get the following error:
Error:Traceback (most recent call last):
File "I:\eCHRApplication\bin\gui\mainWindow.py", line 60, in Connect
self.listenProcess.start()
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\process.py", line 130, in start
self._popen = Popen(self)
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 277, in __init__
dump(process_obj, to_child, HIGHEST_PROTOCOL)
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 199, in dump
ForkingPickler(file, protocol).dump(obj)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 224, in dump
self.save(obj)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 67, in dispatcher
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 401, in save_reduce
save(args)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 554, in save_tuple
save(element)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 731, in save_inst
save(stuff)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 692, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 606, in save_list
self._batch_appends(iter(obj))
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 642, in _batch_appends
save(tmp[0])
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 425, in save_reduce
save(state)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 687, in _batch_setitems
save(v)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 306, in save
rv = reduce(self.proto)
TypeError: can't pickle thread.lock objects
Initializing server object
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\Desktop\Anaconda2\lib\multiprocessing\forking.py", line 381, in main
self = load(from_parent)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 1384, in load
return Unpickler(file).load()
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 864, in load
dispatch[key](self)
File "C:\Users\Desktop\Anaconda2\lib\pickle.py", line 886, in load_eof
raise EOFError
EOFError
Any help in finding the root cause would be greatly appreciated.