python - python 中的并行多处理简单示例

标签 python python-3.x parallel-processing multiprocessing python-multiprocessing

我需要说多处理对我来说是新事物。我读了一些相关内容,但这让我更加困惑。我想通过一个简单的例子来理解它。假设我们在第一个函数中有两个函数,我只是增加“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()

如果你运行上面的代码,你会得到类似:enter image description here

但是这个蓝色选择的值应该是相同的!这就是主要问题:)

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/

相关文章:

r - 所有 R 包的并行编程

python - 为什么命令 Python 在命令提示符中不执行任何操作?

python - Altair choropleth map ,基于折线图选择的颜色突出显示

python - 如何在进程之间共享日期变量 - Multiprocessing python

python - 在哪里可以找到 os.urandom() 的源代码?

memory - 如何找出GPU的共享内存和全局内存大小?

python - 根据列的颜色用 pandas 读取 excel

python - 如何将ndarray转换为数组?

python - TypeError : {1, 3} 不可 JSON 序列化

c++ - C++ OpenMP 中线性代数函数的高效并行化