如何使用 Pythons Multiprocessing 库的 Process class 多次 运行 一个函数?
How can use the Process class of Pythons Multiprocessing library to run a function multiple times?
我有一个函数可以模拟化学反应的随机系统。我现在想多次使用 Pythons Multiprocessing 库中的 Process class 到 运行 随机模拟函数。
我尝试了以下方法:
v = range(1, 51)
def parallelfunc(v):
gillespie_tau_leaping(start_state, LHS, stoch_rate, state_change_array)
if __name__ == '__main__':
start = datetime.utcnow()
p = Process(target=parallelfunc, args=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50))
p.start()
p.join()
end = datetime.utcnow()
sim_time = end - start
print(f"Simualtion utc time:\n{sim_time}")
但这会导致错误 TypeError: parallelfunc() takes 1 positional argument but 50 were given
然后我尝试将 range(1, 51)
传递给 parallelfunc
和过程的 args
参数,但我只是在 [=15= 的减速上得到 SyntaxError: invalid syntax
]
以这种方式使用像 parallelfunc
这样的函数的方法在使用 pool.map
时有效 我只是传递 parallelfunc
后跟 1 - 50 的列表。
但我不知道这里出了什么问题。
有什么建议
干杯。
那是因为你给出了太多的论点。
尝试
def parallelfunc(*v):
gillespie_tau_leaping(start_state, LHS, stoch_rate, state_change_array)
这允许你接受多个参数
我认为错误是因为您将 50 个参数作为 parallelfunc 的参数,您将其定义为仅一个参数。也许尝试添加 list() 以便它只有一个参数,其中包含 50 个数字。不过不知道是不是人数多了
我有一个函数可以模拟化学反应的随机系统。我现在想多次使用 Pythons Multiprocessing 库中的 Process class 到 运行 随机模拟函数。
我尝试了以下方法:
v = range(1, 51)
def parallelfunc(v):
gillespie_tau_leaping(start_state, LHS, stoch_rate, state_change_array)
if __name__ == '__main__':
start = datetime.utcnow()
p = Process(target=parallelfunc, args=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50))
p.start()
p.join()
end = datetime.utcnow()
sim_time = end - start
print(f"Simualtion utc time:\n{sim_time}")
但这会导致错误 TypeError: parallelfunc() takes 1 positional argument but 50 were given
然后我尝试将 range(1, 51)
传递给 parallelfunc
和过程的 args
参数,但我只是在 [=15= 的减速上得到 SyntaxError: invalid syntax
]
以这种方式使用像 parallelfunc
这样的函数的方法在使用 pool.map
时有效 我只是传递 parallelfunc
后跟 1 - 50 的列表。
但我不知道这里出了什么问题。
有什么建议 干杯。
那是因为你给出了太多的论点。 尝试
def parallelfunc(*v):
gillespie_tau_leaping(start_state, LHS, stoch_rate, state_change_array)
这允许你接受多个参数
我认为错误是因为您将 50 个参数作为 parallelfunc 的参数,您将其定义为仅一个参数。也许尝试添加 list() 以便它只有一个参数,其中包含 50 个数字。不过不知道是不是人数多了