我有一个ZMQ提要和一个Schedule包中的调度程序,我正尝试在不同的while循环中调用。
zmq feed将运行3个小时,然后我的Schedule程序包中的调度程序将运行我的处理功能,该功能将干净地停止ZMQ进程(当前使用多重处理)对数据进行实际处理,然后在功能结束时重新启动该进程
我目前这样做的原因是因为我认为在实际数据处理过程中,多线程将zmq feed数据连续追加到数据帧时会出现问题。
因此,这使我不得不使用多重处理。我试过只是从函数中创建进程,然后启动它们并调用join
process = Process(target = run, args = ('bob',))
process1 = Process(target = schedule1, args = 'bob',)
process.start()
process1.start()
process.join()
process1.join()
和
with Pool(2) as p:
p.map(process, "1")
p.map(process1, "1")
运行和计划1是我的职责
with Pool(2) as p:
p.map(schedule1, "1")
p.map(run, "1")
刚刚在上面尝试过,现在它只是卡住了,没有打印出我的while循环告诉我它是活动的。所以不知道这是怎么回事
和
pool = Pool()
result1 = pool.apply_async(schedule, '1')
result2 = pool.apply_async(run, '1')
它们都不起作用,也不会启动我的两个while循环中的任何一个。虽然多线程至少可以做到这一点。之所以选择进行多处理,是因为我可以先使用.terminate()然后使用.join()干净而轻松地立即停止并开始处理,然后使用.start().join()重新启动它。
任何帮助都是有用的,或者任何指向我要去哪里的指针。
所有函数中的参数都是.map内置的伪参数,因为您需要传递参数。