我需要说多处理对我来说是新事物。我读了一些相关内容,但这让我更加困惑。我想通过一个简单的例子来理解它。假设我们在第一个函数中有两个函数,我只是增加“a”变量,然后将其分配给“number”变量,第二个函数启动第一个函数,每隔一秒我想打印“number”变量。它应该看起来像:
global number
def what_number():
a=1
while True:
a+=1
number=a
def read_number():
while True:
--> #here I need to start 'what_number' function <--
time.sleep(1)
print(number)
if __name__ == "__main__":
read_number()
我怎样才能做到这一点?有没有一种简单且正确的方法可以做到这一点?
更新:
我看到 noxdafox 的回答我真的很感激,但这并不是我想要的。首先,我不想在第一个函数中发送值(noxdafox 代码中的“main”)。其次,我不想获取所有值,因此 quene 将不起作用。我需要在每一秒的 while 循环之后进行处理。代码应该类似于:
import multiprocessing
import time
number = 0
def child_process():
global number
while True:
number += 1
print(number)
def main():
process = multiprocessing.Process(target=child_process)
process.start()
while True:
print("should get same number:",number)
time.sleep(0.001)
if __name__ == "__main__":
main()
但是这个蓝色选择的值应该是相同的!这就是主要问题:)
P.S 抱歉造成困惑
最佳答案
好吧,这需要一些时间,但我想通了。这一切都是关于Sharing state between processes 现在一切都像魅力一样有效。代码:
from multiprocessing import Process, Value
import time
def child_process(number):
number.value = 0
while True:
number.value += 1
#print(number)
def main():
num = Value('i')
process = Process(target=child_process, args=(num,))
process.start()
while True:
print("should get same number:", num.value)
time.sleep(1)
if __name__ == "__main__":
main()
关于python - python 中的并行多处理简单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47428768/