我考虑的具体场景是,我正在接收一个函数(指针/句柄),该函数正在实现一些(几乎)任意的程序f
,而不使用线程。程序正在使用它内部的任何伪随机函数,除了种子函数(或可能改变随机状态的函数)。将有一个主程序运行f
,它需要能够随意改变f
的随机种子。所以基本上我的目标是运行以下伪代码:
seed_all_of_python_reliably(seed=current_seed)
controlled_random_output = f(seed=current_seed) # now f works properly according to my seeding
我有一些办法让它正常工作:
f
的用户也编写seed_all_of_python_reliably
,其中一些代码可以确保在f
运行之前,它的代码也得到了正确的种子。在f
的文件中有tell_about_random_seeding(random.seed, numpy.random.seed, ..., etc)
,那么主服务器可以直接通过它被告知的种子植入并为它们进行种子植入。在f
所在的配置文件中(或者实际上可能有很多f
并且它们可能共享相同的随机代码)。然后,主机可以在遍历所有f
之前先浏览配置文件基本上我需要帮助实现2和3。编写这段代码的方法是否简单到发送种子函数的函数指针,然后让主程序来完成?我希望没有什么奇怪的事我可以忽略。在
假设{/strong>在一个函数中,{/strong>不调用<1}函数。我在想可以用NOP
对它们进行monkey-patch,但是,只有当用户告诉我们它使用的种子功能时,才能这样做。假设用户正在编写f
,因为它需要主代码的帮助,因此用户不是拜占庭式的,也不会调用种子设定函数。所以,如果我有这样的假设,我不明白为什么我需要用nop来修补它,如果我们信任用户的话。在
另外,作为帮助用户的补充,如果我决定用方法2或3为他们进行种子植入,那么我们可以通过为他们植入公共库来进一步帮助用户。在
目前没有回答
相关问题 更多 >
编程相关推荐