如何在python中同时运行两段中间有等待的代码?

How to run two pieces of codes with waits in between at the same time in python?

我要运行

import time
number1 = 1
while True:
    number1 = int(number1) + 1
    time.sleep(3)

import time
number2 = 1
while True:
    number2 = int(number2) + 1
    time.sleep(20)

在 python 的同一时间,我将如何着手这样做? 我还是个初学者,如果可以的话请简单的解释一下。

子问题:实际代码少,等待的代码多,使用多线程好还是多处理好?

子问题 2:我可以 运行 比我的 cpu 在多处理中拥有的内核数更多的进程吗?

您可以使用多处理。

from multiprocessing import Process
import time
def loop_3():
    number1 = 1
    while True:
        number1 = int(number1) + 1
        time.sleep(3)
        print(number1)

def loop_20():
    number2 = 1
    while True:
        number2 = int(number2) + 1
        time.sleep(20)
        print(number2)


Process(target=loop_3).start()
Process(target=loop_20).start()

我建议使用并发。为了您的目的,看起来一切都在“同时”发生(这里是对两者的更深入的解释:What is the difference between concurrency, parallelism and asynchronous methods?)。

您可以通过执行以下操作来实现并发:

def f(num, wait):
  time.sleep(wait)
  return int(num) + 1
  
numbers = [1, 2]
test = [f(num, 3) for num in numbers]

这是我用打字稿写的另一个并发示例,您可以尝试一下:ts example

注意:我会警告不要使用多线程/并行,尤其是如果您是 python 的新手。它可能会导致很多问题,难以调试/理解,如果实施不当,通常会导致性能下降而不是收益。

注意 2:如果您愿意同时创建多个实例并 运行 它们(如您在 bat 文件中所描述的那样),您可以继续进行那个,但这会使您的项目难以共享。