Python 并行、相互依存的过程-如何将变量推送到不同的领域?
这是问题的后续,如果有兴趣的话 为免您阅读,以下是总结: 我有两个进程,它们都需要无限期地运行 我需要过程1扫描特定的网址像每10分钟左右的网站。这些URL存储在SetQueue中,因此我没有双重条目。每个循环将产生一定数量的URL。在第一次运行之后,大多数已经存储,但也会有一些新的,它们也需要存储在队列中 进程2接收一个列表,该列表来自队列,并每隔10秒连续刮取URL以检查AJAX值的变化 我需要帮助的问题是,如何使进程2在以与进程1不同的频率运行时接收更新的列表 以下是我的流程代码模型:Python 并行、相互依存的过程-如何将变量推送到不同的领域?,python,loops,parallel-processing,Python,Loops,Parallel Processing,这是问题的后续,如果有兴趣的话 为免您阅读,以下是总结: 我有两个进程,它们都需要无限期地运行 我需要过程1扫描特定的网址像每10分钟左右的网站。这些URL存储在SetQueue中,因此我没有双重条目。每个循环将产生一定数量的URL。在第一次运行之后,大多数已经存储,但也会有一些新的,它们也需要存储在队列中 进程2接收一个列表,该列表来自队列,并每隔10秒连续刮取URL以检查AJAX值的变化 我需要帮助的问题是,如何使进程2在以与进程1不同的频率运行时接收更新的列表 以下是我的流程代码模型: f
from multiprocessing import Process, Queue
import time, random
def a(queue):
while True:
x=[random.randint(0,10), random.randint(0,10), random.randint(0,10)]
print 'send', x
queue.put(x)
time.sleep(20)
def b(queue):
x = queue.get()
print 'recieve', x
while True:
for i in x:
print i
time.sleep(2)
if __name__ == '__main__':
q = Queue()
p1 = Process(target=a, args=(q,))
p2 = Process(target=b, args=(q,))
p1.start()
p2.start()
p1.join()
p2.join()
该模型有一个我无法解决的大问题:如何让流程b接收更新的列表?与我在引用的问题中得到的答案相比,我将while循环放在迭代前面,因为这给了我一个我想要的持续处理循环。但很自然,来自进程a的所有新输入都会被忽略。
我确信,对于“真正的”程序员来说,这是一个非常简单的问题,但我在这里找不到解决方案。感谢您的帮助。我应该继续使用这个过程吗 听起来这是芹菜的任务。忘了添加,芹菜不支持Windows。我会试试,我在Mac上运行,所以芹菜可能会工作。谢谢@postoronnim我现在使用芹菜,但无法让我的工作线程重复,所以我仍然有相同的问题。这里的协议是什么,我可以编辑这个问题还是打开一个新的问题?@user2822564如果现在是芹菜问题,在它自己的主题下提问会让你有更好的机会得到答案,gl!