РЕДАКТИРОВАТЬ
Я пытаюсь запустить функции одновременно, используя многопроцессорную обработку
import serial
import time
from multiprocessing import Process
import sys
sertx = serial.Serial('COM4', 115200)
serrx = serial.Serial('COM3', 115200)
rx_t=0
tx_t=0
def rx(serrx):
global rx_t
while True:
print("hi")
read_serial=serrx.readline()
rx_t = time.time()
print(read_serial)
print('rx: ',rx_t)
def tx(sertx):
print("started")
global tx_t
while True:
msg = str(1)
# print('sending: ',msg.encode())
msgstat = 'A' + msg
#print(msgstat)
#print(type(msgstat))
tx_t = time.time()
sertx.write(msg.encode())
print('tx: ',tx_t)
if __name__ == '__main__':
p1 = Process(target=tx,args=(sertx,))
p2 = Process(target=rx,args=(serrx,))
p1.start()
p2.start()
p1.join()
p2.join()
Ошибка
Traceback (most recent call last):
File "c:/Users/ambuj/Documents/Python Scripts/wave.py", line 58, in <module>
p1.start()
File "C:\Users\ambuj\Anaconda3\lib\multiprocessing\process.py", line 112, in start
self._popen = self._Popen(self)
File "C:\Users\ambuj\Anaconda3\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Users\ambuj\Anaconda3\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "C:\Users\ambuj\Anaconda3\lib\multiprocessing\popen_spawn_win32.py", line 89, in __init__
reduction.dump(process_obj, to_child)
File "C:\Users\ambuj\Anaconda3\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
ValueError: ctypes objects containing pointers cannot be pickled
PS C:\Users\ambuj\Documents\Python Scripts> Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\ambuj\Anaconda3\lib\multiprocessing\spawn.py", line 99, in spawn_main
new_handle = reduction.steal_handle(parent_pid, pipe_handle)
File "C:\Users\ambuj\Anaconda3\lib\multiprocessing\reduction.py", line 82, in steal_handle
_winapi.PROCESS_DUP_HANDLE, False, source_pid)
OSError: [WinError 87] The parameter is incorrect
В основном то, что я делаю / хочу сделать
У меня есть передатчик, который продолжает передавать данные, и у меня есть приемник, который продолжает получать данные. Когда я передаю данные, я записываю время, когда я получаю данные, я записываю их время. Скрипты работают постоянно. Я запускаю эти сценарии параллельно. Поскольку я хочу запускать эти сценарии одновременно, я использую многопроцессорность.
Спасибо