Python Forum
Cant find root cause of thread.lock error
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Cant find root cause of thread.lock error
#1
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.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Syntax error for "root = Tk()" dlwaddel 15 1,160 Jan-29-2024, 12:07 AM
Last Post: dlwaddel
  Error: can't start new thread maha2 0 1,439 Jun-13-2023, 12:26 PM
Last Post: maha2
  Error when using FIND WJSwan 2 889 Jan-27-2023, 05:49 AM
Last Post: deanhystad
  Error in find pearson correlation function erneelgupta 1 1,859 Mar-01-2022, 03:41 PM
Last Post: stevendaprano
  Getting 'NoneType' object has no attribute 'find' error when WebScraping with BS Franky77 2 5,246 Aug-17-2021, 05:24 PM
Last Post: Franky77
  List of error codes to find (and count) in all files in a directory tester_V 8 3,668 Dec-11-2020, 07:07 PM
Last Post: tester_V
  Error SQLite objects created in a thread can only be used in that same thread. binhduonggttn 3 15,557 Jan-31-2020, 11:08 AM
Last Post: DeaD_EyE
  unable to pass a input after changing the user from root to non root using python avinash 3 3,177 Apr-08-2019, 10:05 AM
Last Post: avinash
Exclamation Error: There is no current event loop in thread 'MainThread' AlekseyPython 5 15,811 Feb-21-2019, 04:37 AM
Last Post: AlekseyPython
  How to ignore - ERROR: The system was unable to find the specified registry key or va asheru93 9 6,639 Feb-04-2019, 06:35 AM
Last Post: asheru93

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020