如何检查Python Multiprocessing中的Process类是否工作



我编写了以下代码,该代码运行一个函数,模拟一系列化学反应的随机模拟。我写了以下代码:

v = range(1, 51)
def parallelfunc(*v):     
    gillespie_tau_leaping(start_state, LHS, stoch_rate, state_change_array)
def info(title):
    print(title)
    print('module name:', __name__)
    print('parent process:', os.getppid())
    print('process id:', os.getpid())
if __name__ == '__main__':
    info('main line')
    start = datetime.utcnow()
    p = Process(target=parallelfunc, args=(v))
    p.start()    
    p.join()
    end = datetime.utcnow()
    sim_time = end - start
    print(f"Simualtion utc time:n{sim_time}")

我正在使用多处理库中的Process方法,并尝试运行gillespie_tau_leaping 50次。

只是我不确定它是否有效。gillespie_tau_leaping向终端打印出许多值,但这些值只打印出一次,我希望它们打印出50次。

我尝试使用getpid etc命令,这将向终端返回以下内容:

main line
module name: __main__
parent process: 6188
process id: 27920

我如何判断我的代码是否有效,以及如何让它将gillepsie_tau_leaping的值打印50次到终端?

干杯

您的代码只运行一个进程,即对Process的调用,生成一个新线程,但您只执行了一次(不是在循环中(。

我建议您使用多处理池你的代码可以是这样的:

from multiprocess import Pool
def parallelfunc(*args):
    do_something()
def main():
   # create a list of list of args for the function invocation
   func_args = [['arg1call1', 'arg2call1', 'arg3call1'], ['arg1call2', 'arg2call2', 'arg3call2']]
   with Pool() as p:
      results = p.map(parallelfunc, func_args)
   # do something with results which is a list of results

默认情况下,multiprocessing池创建与CPU核心数量相同的进程,并管理进程池,直到处理结束,负责所有进程间通信。这真的很方便,因为同步进程可能很困难。

希望这能帮助

相关内容

  • 没有找到相关文章

最新更新