Python 确认对多处理模块和线程启动方式的理解
嗨,我不确定我是否理解多处理模块,并想寻求建议。我正在回顾这里找到的无痛并发示例。下面是我正在测试的代码Python 确认对多处理模块和线程启动方式的理解,python,multiprocessing,Python,Multiprocessing,嗨,我不确定我是否理解多处理模块,并想寻求建议。我正在回顾这里找到的无痛并发示例。下面是我正在测试的代码 import multiprocessing import time x = 4 y = 6 def f1(x,y): x = x+y print 'F1:', x def f2(x,y): y = x-y print 'F2:', y def main(): print "Starting main program" hilo1
import multiprocessing
import time
x = 4
y = 6
def f1(x,y):
x = x+y
print 'F1:', x
def f2(x,y):
y = x-y
print 'F2:', y
def main():
print "Starting main program"
hilo1 = multiprocessing.Process(target=f1, args=(x,y))
hilo2 = multiprocessing.Process(target=f2, args=(x,y))
print "Launching threads"
hilo1.start()
hilo2.start()
hilo1.join()
hilo2.join()
print "Both threads finished"
print "Ending program"
print "X:", x, "Y:", y
if __name__=='__main__':
main()
输出为:
Starting main program
Launching threads
Both threads finished
Ending program
X: 4 Y: 6
我期待着更接近于:
Starting main program
Launching threads
F1: 10
F2: -2
Both threads finished
Ending program
X: 4 Y: 6
这是我将main更改为以下内容时的输出:
def main():
print "Starting main program"
hilo1 = f1(x,y)
hilo2 = f2(x,y)
print "Launching threads"
print "Both threads finished"
print "Ending program"
print "X:", x, "Y:", y
多处理线程正在运行吗?检查每个函数是否使用多处理运行的最佳方法是什么?您运行脚本的环境是什么?CLI?闲置的当我通过CLI运行此命令时,它输出的正是您期望它输出的内容。我怀疑你用来启动运行脚本的任何东西都会丢失子进程的输出。我正在空闲状态下运行脚本。你有什么建议不丢失子进程的输出吗?你的错误是认为这些线程实际上是进程。进程的共享不如线程多,例如,输出设备可能不会被继承。@MarkRansom感谢您提供的信息。我能够使用线程模块而不是多处理模块来获得所需的结果。我需要仔细阅读两者之间的差异