我想我对如何处理这个问题感到困惑。
我有许多用于与api交互的功能,例如获取产品ID,更新产品详细信息,更新库存。这些调用需要一个接一个地完成,并且全部封装在一个函数api.push()中。
假设我需要运行api.push()100次,有100个产品ID
我想做的是同时运行许多api.push,以便加快处理速度。例如,假设我想一次运行5个。
我对这是多进程处理还是线程处理还是两者都不满意感到困惑。我都尝试过,但是它们似乎没有用,例如我有这个
$table->dropUnique(['long_col_name','some_other_id']);
任何指导将不胜感激
谢谢
答案 0 :(得分:1)
请阅读python doc,并在global interpreter lock上进行一些研究,以了解是否应根据情况使用线程处理或多处理。
我不知道api.push
的内部工作原理,但是请注意,您应该将函数引用传递给multiprocessing.Process
。
使用p = multiprocessing.Process(target=api.push())
将传递api.push()
返回的任何内容作为要在子流程中调用的函数。
如果api.push
是要在子流程中调用的函数,则应改用p = multiprocessing.Process(target=api.push)
,因为它传递的是对该函数的引用,而不是该函数的结果。 >