假设我想要一个程序Foo.py
,它有一些任意的例程-- Bar()
、Quux()
和Fizz()
。假设从过程的角度来看,通常的执行顺序应该是Bar() -> Quux() -> Fizz()
。但是,Fizz()
应该根据某些运行时操作有条件地调用函数Buzz()
,并且在Fizz()
期间的任何时候调用Buzz()
都应该将进程返回给Quux()
。
根据体系结构的不同,我对如何在程序集中使用系统调用实现并发进程有一个很好的理解,但是在Python中有哪些选项可以供我使用,在那里我不能--坦率地说--使用大量跳转和直接移动指令指针?在寻找答案时,我发现循环和递归作为返回程序的建议。我认为如果不停止Fizz()
进程以等待Buzz()
的条件检查,循环就无法工作,我也不确定如何在这个场景中实现递归。(我的Buzz()
就像图形用户界面上的“后退”按钮)。
发布于 2017-07-07 10:17:17
使用协同(多线程)将提供所需的并发功能。来源于对问题的评论和用户2357112的答复。
发布于 2017-07-06 09:39:09
你不需要任何花哨的东西。通常的结构化编程工具会很好地工作。让Fizz
在调用Buzz
后返回,并返回一个指示符,指示是否返回到Quux
Bar()
while True:
Quux()
if not Fizz():
break
(如果Buzz
的唯一效果应该是将执行返回给Quux
,那么根本没有Buzz
,只需返回。)
发布于 2017-07-06 10:06:25
也许像下面这样流动。Fizz
循环,直到某些条件调用Buzz
。触发调用的相同的检查会中断循环。
import random
def Buzz():
print ("Buzz")
def Fizz():
print ("Fizz")
while True:
flip = random.random()
print (" ", flip)
if flip <= 0.5:
Buzz()
break
def Quux():
print ("Quux")
Fizz()
print ("Back in Quux")
def Bar():
print ("Bar")
Quux()
Bar()
输出:
Bar
Quux
Fizz
0.88313135192614
0.9782005471906149
0.6899740417799126
0.724911154764598
0.6193573809551899
0.3713918176393549
Buzz
Back in Quux
https://stackoverflow.com/questions/44955528
复制相似问题