我试图使用multiprocessing
模块并行调用具有不同参数的相同函数。
以下是我的代码示例:
from django.apps import AppConfig
class CurrencyRatesConfig(AppConfig):
name = 'currency_rates'
def ready(self):
import time
from multiprocessing import Process
import currency_rates.ws_get_rates
p1 = Process(currency_rates.ws_get_rates.get_rates('1m', 'tBTCUSD', 'BTC2USD'))
p1.start()
p2 = Process(currency_rates.ws_get_rates.get_rates('1m', 'tIOTUSD', 'IOT2USD'))
p2.start()
p1.join()
p2.join()
但它不起作用。我只看到了p1的执行结果。
注意:get_rates()
使用websocket
模块。
有人可以描述什么是错的吗?
感谢。
答案 0 :(得分:0)
问题在于Process参数。修改如下:
此演示 工作。不确定为什么OP没有解决具体问题。
from multiprocessing import Process
import time
import sys
def outputString(thestring):
for i in range(3):
print(thestring)
time.sleep(2)
return
def main():
p1 = Process(target=outputString, args=('P1 is processing',))
p1.start()
p2 = Process(target=outputString, args=('P2 is processing',))
p2.start()
if __name__ == "__main__":
main()
OP原始代码(已修改)
from django.apps import AppConfig
class CurrencyRatesConfig(AppConfig):
name = 'currency_rates'
def ready(self):
import time
from multiprocessing import Process
import currency_rates.ws_get_rates
p1 = Process(target=currency_rates.ws_get_rates.get_rates, args=('1m', 'tBTCUSD', 'BTC2USD'))
p1.start()
p2 = Process(target=currency_rates.ws_get_rates.get_rates, args=('1m', 'tIOTUSD', 'IOT2USD'))
p2.start()