Hi Akshay It's a little difficult to understand what you're doing, but as a general rule I would avoid using both multiprocessing and Qt threads (if only because this is going to confuse things). The error you're receiving looks like it is coming from the serialisation (pickle?) of the data in/out of the task.
For a problem like this I would suggest sticking with Qt threads and implementing something via QRunnable/QThreadpool. I have a brief (draft) writeup of this process on my site at: http://mfitzp.io/application-multithreading-with-pyqt/ ...will be finished up in a few weeks. The approach is to create a QRunnable class that accepts a function to run and passes notification/results out as signals. To start a job (e.g. process a file) you would pass in your function, the filename and then attach a listener to the 'result' signal. Once the task is run your data will come back out via that. You can for example attach this signal to a slot (python function) to update your GUI. If the plotting is causing a slow down, you might also want to try PyQtGraph. Hope that helps Martin On 27 August 2016 at 10:16, Akshay Verma via Python-nl <python-nl@python.org > wrote: > Hi all, > > After a lot of searching on the internet, I am looking for help from you > guys. > > I am working on a Qt based GUI which takes in a stream of file paths > coming from a separate process and reads those data file for > post-processing and plotting. Since post-processing and plotting have > become a bit involved, there is a request to improve the performance of the > GUI. Currently the GUI takes in the input message with the path of the file > and gives a SIGNAL to the Worker thread (Qt thread) to process the file. > The processing results are saved in the object for reference and display > within the GUI. Simple separation of the threads does not help a lot for > intensive processing cases. I had to add a sleep of 1 sec to quick fix the > GIL of Python and make the GUI responsive. To improve the solution, I > thought of using Multiprocessing for the post-processing task. I am trying > to add the task to queue and get back the result in a queue. When I > implement this solution, I get '*TypeError: cannot serailize > '_io.TextIOWrapper' object'* at the call of start() of the Process. > > What could be the cause of this error? Is there a better way to solve this > issue? Any suggestions are welcome. > > Regards, Akshay Verma > > _______________________________________________ > Python-nl mailing list > Python-nl@python.org > https://mail.python.org/mailman/listinfo/python-nl > >
_______________________________________________ Python-nl mailing list Python-nl@python.org https://mail.python.org/mailman/listinfo/python-nl