Python Forum
How to sharing object between multiple process from main process using Pipe
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to sharing object between multiple process from main process using Pipe
#1
I try to call multiprocessing to act my process faster.
At the moment I face some problems sharing some data with many processes from main process.
I use multiprocess.pipe() to pass the data.

I use multiprocess.manager to pass the data.

1. Initialization:-



<

try:
global devices
self.listofwritetags = self.collectwritetaglist()
conn1, conn2 = multiprocessing.Pipe()
devices = bussiness.initilaztion(self.comm_object,logger)
conn1.send(devices)
self.callmotor1dprocess =
multiprocessing.Process(target=callallmotor1d,args=[conn2])
self.listofthread.append(self.callmotor1dprocess)





2.Start and stop process:-



def startprocess(self):
for item in self.listofprocess:
item.start()


def stopprocess(self):
for item in self.listofprocess:
item.terminate()



UI:-




self.button3 = ttk.Button(self.frame, text='Start', command=self.startprocess,state =NORMAL)
self.button3.grid(column=1, row=4, sticky=W,padx=5, pady=5)

self.button4 = ttk.Button(self.frame, text='Stop', command=self.stopprocess, state=NORMAL)
self.button4.grid(column=1, row=5, sticky=W, padx=5, pady=5)



I need to call avobe 3 process in one class:- FormUI

but I call executable process outside of the FormUI class.

I got an error when I try to initialize.I want to pass devices from main process to child process.

The calling method:-





def callallmotor1d(conn):
devices = conn.recv()
bussiness.motorallprocessing(devices)



def callallsov1s(conn):
devices = conn.recv()
bussiness.motorallprocessing(devices)





Any help regarding this would be appreciable


Error messege:-

2019-09-03 13:15:33,755: can't pickle _thread.lock objects
Traceback (most recent call last):
File "C:/Users/misu01/PycharmProjects/opcua/ui_v7.py", line 226, in initilization
conn1.send(devices)
File "C:\Users\misu01\AppData\Local\Programs\Python\Python37\lib\multiprocessing\connection.py", line 206, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "C:\Users\misu01\AppData\Local\Programs\Python\Python37\lib\multiprocessing\reduction.py", line 51, in dumps
cls(buf, protocol).dump(obj)
TypeError: can't pickle _thread.lock objects
Reply
#2
self.listofprocess has not been declared anywhere in the code you posted
def startprocess(self):
    for item in self.listofprocess:
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  interactive process for input and output maiya 1 612 Mar-27-2025, 08:40 AM
Last Post: Gribouillis
  Problem running external process rjdegraff42 0 354 Mar-19-2025, 07:50 PM
Last Post: rjdegraff42
  Getting an error while trying to process data, low memory when memory is not low? bkeith12 0 552 Dec-20-2024, 03:06 PM
Last Post: bkeith12
  How can I make this code more efficient and process faster? steven_ximen 0 393 Dec-17-2024, 04:27 PM
Last Post: steven_ximen
  I want to eliminate git bash from the setup process 1bitboolean 3 1,038 Dec-03-2024, 09:13 PM
Last Post: deanhystad
  Trying to get JSON object in python and process it further Creepy 2 1,050 Oct-24-2024, 08:46 AM
Last Post: buran
  Pipe traceback to a C program Alexandros 0 712 Oct-22-2024, 12:32 PM
Last Post: Alexandros
  How to process tasks as they complete when using TaskGroup? odigity 2 1,000 Sep-17-2024, 03:42 PM
Last Post: odigity
  how to process 12 million record pymach 4 1,149 Aug-01-2024, 07:58 AM
Last Post: Pedroski55
  How to automate the process br0oJ 0 843 Feb-14-2024, 12:01 PM
Last Post: br0oJ

Forum Jump:

User Panel Messages

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