我是编程和python的新手,你能帮我解决一下我编写的代码吗?我不知道如何让它发挥作用。我必须上课吗?如何在多个函数中使用相同的变量?我需要多处理吗?
这是我的测试代码:
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()
它说我在最后一行是无效的语法。但我很确定即使没有语法我的代码也行不通,你能帮忙吗?什么可以改变?
答案 0 :(得分:0)
很难说不知道你想用这个代码实现什么,但也许你不需要进程或线程。您是否尝试过生成器功能?
Workspace/.metadata/.plugins
这将使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)
和p1
从其各自的算法生成连续值,并将它们返回到由p2
组合。 (假设p3
做了与p2
不同的事情;否则你可以为两者使用相同的生成器函数。)总而言之,这可能比使用不同的线程和一些全局状态操作更清晰那些线程。