我正在尝试在我的python应用程序中运行2个单独的进程。所以我有这样的代码:
from multiprocessing import Process
def f1():
while 1:
print('Hello')
def f2():
while 1:
print('Goodbye')
def main():
p1 = Process(target=f1, args=())
p1.start()
p1.join()
p2 = Process(target=f2, args=())
p2.start()
p2.join()
if __name__ == '__main__':
main()
此代码在我的机器上不执行任何操作,它不会产生任何输出。我最初认为这可能是与IDE相关的问题,但在我的IDE,PyScripter和IDLE上都是一样的。
任何想法,为什么这不打印任何东西?
答案 0 :(得分:3)
如何使用Queue
?
from multiprocessing import Process, Queue
def f1(q):
while 1:
q.put('Hello')
def f2(q):
while 1:
q.put('Goodbye')
def main():
q = Queue()
p1 = Process(target=f1, args=(q,))
p1.start()
p2 = Process(target=f2, args=(q,))
p2.start()
while True:
try:
print q.get()
except:
break
if __name__ == '__main__':
main()
答案 1 :(得分:2)
您应该保存它并在IDE外部运行:
C:\> python multi.py
然后它无限地打印出Hello
。您应该更改主广告,以查看Hello
和Goodbye
:
def main():
p1 = Process(target=f1, args=())
p2 = Process(target=f2, args=())
p1.start()
p2.start()
p1.join()
p2.join()
然后你有一个快乐的竞争条件,不断打印GHoodbyeello
因为两个进程同时使用相同的stdout资源。