最近用pyqt封装了一个股票交易类的执行程序,我打算在同一台电脑上同时运行多个该程序,选择不同的股票进行交易。因为是同一电脑多开同一程序,这样他们之间会有影响吗,比如全局变量会被互相占用吗。如果有影响该如何解决,需要用什么多开隔离器之类的软件吗
全局变量不会互相影响
配置文件或注册表操作可能会互相影响
有影响可以使用虚拟机或多开隔离器
对于多开同一程序的问题,通常情况下多个程序之间会互相影响,包括使用全局变量时会被占用。解决方案是采取多进程或者多线程来实现程序的多开,这样可以让每个进程/线程拥有自己的内存空间,互相不会影响到彼此的变量和函数等资源。具体来说,可以使用Python的multiprocessing或者threading模块来实现多进程/多线程的编程。下面给出一个使用多进程的例子:
import multiprocessing
from my_trading_program import TradingProgram
program1 = TradingProgram(stocks=["AAPL","MSFT","FB"], account="account1")
program2 = TradingProgram(stocks=["GOOGL","TSLA","AMZN"], account="account2")
# 启动两个进程来分别运行program1和program2
process1 = multiprocessing.Process(target=program1.run)
process2 = multiprocessing.Process(target=program2.run)
process1.start()
process2.start()
在以上代码中,我们首先定义了两个TradingProgram对象program1和program2,然后启动两个进程分别运行这两个对象的run()方法。实际上,run()方法就是我们原来写的股票交易程序的主程序代码。由于使用了多进程,所以这两个程序之间的变量和其他资源都不会互相影响。
另外,需要注意的是,如果TradingProgram对象中使用了PyQt5来实现图形界面,则需要注意在多进程或者多线程中如何启动应用程序,并且在Windows系统下也需要特别注意处理多进程相关的问题,比较推荐的方法是使用异步任务队列,例如使用Celery或者RabbitMQ来实现多进程任务的分发和调度。