【发布时间】:2021-09-01 09:54:41
【问题描述】:
多线程正在打印输出,但不是多处理。搜索堆栈溢出并回答问题并没有解决问题。
多处理不工作。
from threading import Thread
import datetime
from multiprocessing import Process
import sys
import time
def func1():
print('Working')
time.sleep(5)
global a
a=10
print(datetime.datetime.now())
def func2():
print("Working")
time.sleep(10)
print(datetime.datetime.now())
p1 = Process(target=func1)
p1.start()
p2 = Process(target=func2)
p2.start()
p1.join()
p2.join()
print(a)
甚至 print(a) 也没有打印值。它说
NameError: name 'a' is not defined
【问题讨论】:
-
变量不会在多处理进程之间移动(队列等除外)——这不可能按原样工作。你真正想做什么?
-
已编辑问题请检查
-
正如我所说,变量不会在进程之间传播。如果
func1正在另一个Python 进程中运行,它修改全局a将不会出现在父进程中。 你想用多处理做什么? -
我刚刚检查了变量是否正在打印 bcz 以检查它是否执行
-
连 func1 和 func2 里面的打印都不显示
标签: python multiprocessing python-multiprocessing python-multithreading