使用欧斯波本()或执行函数的子进程

2024-10-08 19:22:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在研究线程、多进程和操作系统文档,以改进我的程序结构。然而,老实说,有些是复杂的,我不能让它实现在我的程序,要么它崩溃由于堆栈溢出,或得到错误的输出或根本没有输出。所以这是我的问题。你知道吗

假设我有一个传递到函数中的名称列表,这个函数就是我想在另一个控制台中运行的函数,当然还有一个python解释器。并在那里运行一个完整的周期。你知道吗

假设我有这个:

def execute_function(name, arg1, arg2):
   While True:
       #do something

for name in names:
   execute_function(name, arg1, arg2)

为了在python上以编程方式打开另一个控制台并在那里运行这个函数,我应该使用什么While True:它是subaccess/multiprocess/threading还是os.popen()?你知道吗

在这个例子中,我应该如何执行呢?多处理池和进程总是与我崩溃。所以我认为这不是正确的解决方案。到目前为止,我还没有看到线程和子进程与函数一起使用的例子。有解决办法吗?或者一个我可能错过的简单解决方案?谢谢。你知道吗

编辑:

类似代码:

     if symbols is not None and symbols1 is not None:

         symbols = [x for x in symbols if x is not None]
         symbols1 = [x for x in symbols1 if x is not None]
         if symbol != None and symbol in symbols and symbol in symbols1:
              with Pool(len(exchanges)) as p:
                   p.map(bot_algorithm, (a, b, symbol, expent,amount))

http://prntscr.com/j4viat-错误是什么样子的


Tags: and函数nameinnoneforif进程
1条回答
网友
1楼 · 发布于 2024-10-08 19:22:47

subprocess总是比os.system()优先。你知道吗

文档包含许多示例—在您的例子中,execute_function()函数可能希望使用subprocess.check_output()来查看命令的结果。你知道吗

例如:

def execute_function(name, arg1, arg2):
  output = subprocess.check_output(["echo", name])
  print(output)

不过,这样做只是启动一个新进程,并等待它返回。虽然从技术上讲这是两个进程,但这并不完全是您所说的多线程。你知道吗

要使用同步运行多个子进程,可以使用多处理库执行以下操作:

from multiprocessing.dummy import Pool

def execute_function(name, arg1, arg2):
  return subprocess.check_output(["echo", name])

names = ["alex", "bob", "chrissy"]

pool = Pool()

map_results = pool.map(execute_function, names)

这会将迭代器(名称列表)映射到函数(execute\ function)并一次运行它们。好吧,就像你的机器一次有多少核一样。map\u results是execute_function函数返回值的列表。你知道吗

相关问题 更多 >

    热门问题