不同的 multiprocessing.Queue 对象在不通信的情况下是否应该用于不同的进程?
Should different multiprocessing.Queue objects be used for different processes when they do not communicate?
我是多处理的新手,这是我程序中的示例代码,我想知道这是否是最佳实践。
我设置了两个相互不通信的进程,但我传递了相同的 multiprocess.Queue()
对象来接收它们的输出。下面的代码示例:
"""Setting up multi-processing"""
que = Queue()
processes_list = list()
process1 = Process(target=lambda q, arg1, arg2, arg3, arg4: q.put(readScope(arg1, arg2, arg3, arg4)),
args=(que, scope, numCollects, numChan, startTimeVoltage,))
processes_list.append(process1)
process2 = Process(target=lambda q, arg1, arg2, arg3: q.put(readOpsens(arg1, arg2, arg3)),
args=(que, ser, ntimes, startTimeOpsens,))
processes_list.append(process2)
for process in processes_list:
process.start()
for process in processes_list:
process.join()
"""Data manipulation"""
voltageData = que.get()
tempData = que.get()
这是好的做法吗?
这些看跌期权可以以任何顺序出现。电压数据可能最终出现在温度数据变量中,而温度数据最终出现在电压数据变量中。因此,如果你想确保获得第一个进程的输出,然后是第二个进程,要么标记并排序,要么使用两个队列。
我是多处理的新手,这是我程序中的示例代码,我想知道这是否是最佳实践。
我设置了两个相互不通信的进程,但我传递了相同的 multiprocess.Queue()
对象来接收它们的输出。下面的代码示例:
"""Setting up multi-processing"""
que = Queue()
processes_list = list()
process1 = Process(target=lambda q, arg1, arg2, arg3, arg4: q.put(readScope(arg1, arg2, arg3, arg4)),
args=(que, scope, numCollects, numChan, startTimeVoltage,))
processes_list.append(process1)
process2 = Process(target=lambda q, arg1, arg2, arg3: q.put(readOpsens(arg1, arg2, arg3)),
args=(que, ser, ntimes, startTimeOpsens,))
processes_list.append(process2)
for process in processes_list:
process.start()
for process in processes_list:
process.join()
"""Data manipulation"""
voltageData = que.get()
tempData = que.get()
这是好的做法吗?
这些看跌期权可以以任何顺序出现。电压数据可能最终出现在温度数据变量中,而温度数据最终出现在电压数据变量中。因此,如果你想确保获得第一个进程的输出,然后是第二个进程,要么标记并排序,要么使用两个队列。