如何组合多个 while True 函数进程?

How to combine multiple while True function processes?

我是编程新手,python,你能帮我写下代码吗?我不知道如何让它工作。我必须使用 class 吗?另外如何在多个函数中使用同一个变量?我需要多处理吗?

这是我的测试代码:

from time import sleep
from multiprocessing import Process

def p1():
    while True:
        a = 1+1
        sleep(1)

def p2():
    while True:
        b = 1+1
        sleep(1)

def p3():
    while True:
        c = a+b
        print c
        sleep(1)

try:
    a1 = Process(target = p1)
    a2 = Process(target = p2)
    a3 = Process(target = p3)

    a1.start()
    a2.start()
    a3.start()

它说我在最后一行有一个无效的语法,它是空的。但我很确定即使没有语法我的代码也无法工作,你能帮忙吗?可以改变什么?

如果不知道您究竟想用该代码实现什么,很难说清楚,但也许您不需要进程或线程。您是否尝试过生成器函数?

def p1(a=0):
    while True:
        yield a
        a = a + 1

def p2(b=0):
    while True:
        yield b
        b = b + 1

def p3(a, b):
    c = a + b
    print c

a_gen = p1()
b_gen = p2(3)
for _ in range(5):
    a = next(a_gen)
    b = next(b_gen)
    p3(a, b)

这将使 p1p2 从各自的算法中生成连续的值,并且 return 它们将由 p3 组合。 (假设 p2 做的事情与 p1 不同;否则你可以对两者使用相同的生成器函数。)总而言之,这可能比使用不同的线程和由那些线程。