【发布时间】:2025-12-16 00:20:07
【问题描述】:
当使用.start() 方法执行函数时,函数没有按我预期的那样工作。我可以看到time.sleep() 行,但是更改变量和打印语句可以。这些函数在调用.run() 方法时执行,但这会将代码与其他函数串联运行,而不是多处理。
from multiprocessing import Process
import time
import sys
worker1 = None
worker2 = None
def worker():
time.sleep(60)
worker1 = 6
print("hello")
sys.stdout.flush()
def workertwo():
time.sleep(60)
worker2 = 6
print("world")
sys.stdout.flush()
if __name__ == '__main__':
hello = Process(target=worker)
world = Process(target=workertwo)
world.start()
hello.start()
world.join()
hello.join()
print(worker1)
print(worker2)
这只是一段测试代码,它与更大的软件共享问题。我在 Windows 10 机器上运行,运行 python 3.6.8
当我运行这段代码时,我得到:
None
None
>>>
但我希望得到:
hello
world
6
6
>>>
它是从脚本文件运行的,但在从命令提示符内部运行时确实有效。它将与 tkinter GUI 一起运行,因此需要从脚本运行(我假设)
这是我在这里的第一个问题,我是自学的。任何指导都会有所帮助,
谢谢丹尼
【问题讨论】:
-
究竟是什么不工作?请注意,您在这里的赋值语句只是创建局部变量,在函数终止后不再存在,并且与同名的全局变量没有任何联系......一般来说,当提出问题时,不要我们猜。说“它不起作用”不是一个充分的问题描述。 什么不起作用以及如何起作用?
-
它的模块的 .start() 函数我认为不起作用,工作函数只有时间线运行,而更改变量的行和打印语句不' t 运行,我进入 shell 的唯一打印输出是 None 和 None
标签: python multiprocessing process.start