假设您有一个单例可以使用(这意味着将其初始化为原始状态的唯一方法是重新启动整个脚本)并且您希望多次执行特定任务并获取返回的对象。有没有办法在没有磁盘I / O的情况下做到这一点?我知道我可以使用subprocess.check_output()
stdio
和文件I / O或管道result = foo()
来做到这一点,但是有任何更简洁的解决方案就像同一个进程通信一样简单(编辑:我的意思是, #the singleton
def foo():
crash_when_got_run_twice()
result = something_fancy()
return result
#the runner
def bar(times):
for i in range(times):
result = magic() # run foo()
aggregate_result(result)
return aggregated_result()
)?
magic()
您认为$(this).html(sourcesArray[tableNumber-1].forecast[i].alt.high)
可以做什么?
答案 0 :(得分:1)
在类似unix的系统上,您可以分叉子进程并使其运行单例。假设您已经导入了单例所需的所有内容,并且单例本身不会触及磁盘,则可以正常工作。公平警告:无论出于什么原因,这个东西首先是单身人士可能会扼杀你。你可以让多处理包为你做繁重的工作。
在Windows上,执行一个新的python解释器,父节点和子节点之间可能存在重要的状态,这可能会产生有害影响。但同样,它可能会起作用......
import multiprocessing as mp
#the singleton
def foo():
crash_when_got_run_twice()
result = something_fancy()
return result
def _run_foo(i):
return foo()
#the runner
def bar(times):
with mp.Pool(min(mp.cpu_count(), times) as pool:
return pool.map(_run_foo, range(times))